如何将对docker-compose.yml所做的更改实施到分离的运行容器
项目当前正通过以下命令在后台运行:如何将对docker-compose.yml所做的更改实施到分离的运行容器,docker,docker-compose,Docker,Docker Compose,项目当前正通过以下命令在后台运行: docker-compose up -d 我需要对他们的docker compose.yml进行两项更改: 添加一个新容器 更新以前的容器以具有指向新容器的链接 更改后: 注意这个“docker compose up-d将完成这项工作 输出应该是 > docker-compose up -d Starting container1 ... done > docker-compose up -d container1 is up-to-dat
docker-compose up -d
我需要对他们的docker compose.yml
进行两项更改:
- 添加一个新容器
- 更新以前的容器以具有指向新容器的链接
注意这个“
docker compose up-d
将完成这项工作
输出应该是
> docker-compose up -d
Starting container1 ... done
> docker-compose up -d
container1 is up-to-date
Creating container2 ... done
作为一个旁注,DOCKER编写不是真正用于生产的。您可能需要考虑DOCKER群。
< P>如果您只运行<代码> DOCKER组成-D/CODE >,它会注意到新的容器和更改的配置并应用它们。 但是: (不破坏任何东西) 有许多设置只能在容器启动时设置。如果更改这些设置,Docker Compose将删除并重新创建受影响的容器。例如,链接是仅启动的选项,因此重新运行Docker Compose up-d
将删除并重新创建web
容器
这破坏了Mongo DB容器…我不能这样做…再次
为此添加卷:
选项,以便将数据存储在容器外部。您可以将其保存在命名卷中,可能由Docker Compose管理,这有一些优点,但主机系统目录可能更难意外破坏。您必须删除并重新启动容器才能更改此选项。但请注意例如,如果MongoDB中有一个安全更新,并且您需要一个新映像,那么您还必须删除并重新启动容器
您在这里的理想状态是:
- 实际数据库(如MongoDB容器)将数据存储在命名卷或主机目录中
- 应用程序(如Rails容器)不在本地存储任何内容,可以自由销毁和重新创建
- 所有代码都在Docker映像中,这些映像始终可以从源代码管理中重建
- 根据需要使用卷来插入配置文件和提取日志
如果您丢失了整个
/var/lib/docker
目录(这种情况会发生!),您实际上不应该丢失任何状态,尽管您可能会导致一些应用程序停机。使用卷是有意义的,也是一个很好的想法,尽管我认为在容器中存储DB没有任何意义(至少在生产中).我同意我应该能够自由销毁/重新创建容器。谢谢。
> docker-compose up -d
Starting container1 ... done
> docker-compose up -d
container1 is up-to-date
Creating container2 ... done
db:
image: mongo
restart: always