skp*_*rin 2 docker docker-compose
该项目当前正在此命令在后台运行:
docker-compose up -d
我需要对它们进行两项更改docker-compose.yml:
- 添加一个新的容器
- 更新以前的容器以具有指向新容器的链接
进行更改后:
注意<--我的更改的“ ”箭头
web:
        build: .
        restart: always
        command: ['tini', '--', 'rails', 's']
        environment:
            RAILS_ENV: production
            HOST: example.com
            EMAIL: admin@example.com
        links:
                - db:mongo
                - exim4:exim4.docker # <-- Add link
        ports:
                - 3000:3000
        volumes:
                - .:/usr/src/app
db:
        image: mongo
        restart: always
exim4: # <-------------------------------- Add new container
        image: exim4
        restart: always
        ports:
            - 25:25
        environment:
            EMAIL_USER: user@example.com
            EMAIL_PASSWORD: abcdabcdabcdabcd
进行更改后,如何应用它们?(不破坏任何东西)
我试过了,docker-compose down && docker-compose up -d但这破坏了Mongo DB容器...我再也不能这样做了...:sob:
docker-compose restart说它不会识别对(来源:https : //docs.docker.com/compose/reference/restart/)所做的任何更改docker-compose.yml
docker-compose stop && docker-compose start 听起来像是不用我的更改就可以启动旧容器吗?
测试服务器:
生产服务器可能使用较旧的版本,不确定是否会出现问题?
只是docker-compose up -d会做的工作。
输出应该像
> docker-compose up -d
Starting container1 ... done
> docker-compose up -d
container1 is up-to-date
Creating container2 ... done
附带说明一下,docker-compose 并不是真正用于生产。您可能需要考虑 docker swarm。
这里的关键是幂up等。
如果您更新 docker-compose.yaml 中的配置
docker compose up -d
如果 compose 在运行之前正在构建图像,并且您想要重建它们:
docker compose up -d --build
如果只是docker compose up -d再次运行,它将注意到新容器和更改的配置并应用它们。
但:
(不破坏任何东西)
有许多设置只能在容器启动时设置。如果更改这些设置,则Docker Compose将删除并重新创建受影响的容器。例如,链接是仅启动选项,因此重新运行docker-compose up -d将删除并重新创建web容器。
这摧毁了Mongo DB容器...我再也不能这样做...
db:
    image: mongo
    restart: always
volumes:为此添加一个选项,以便将数据存储在容器外部。您可以将其保存在一个可能由Docker Compose管理的命名卷中,该卷具有一些优点,但是主机系统目录可能更难以意外销毁。您必须删除并重新启动容器才能更改此选项。但是请注意,例如,如果MongoDB中存在安全更新,并且您需要新的映像,则还必须删除并重新启动容器。
您的理想状态是:
如果丢失了整个/var/lib/docker目录(发生这种情况!),则实际上不应丢失任何状态,尽管您可能会因应用程序停机而结束。
| 归档时间: | 
 | 
| 查看次数: | 931 次 | 
| 最近记录: |