f1n*_*1nn 6 docker boot2docker dockerfile docker-compose
我正在使用docker-compose进行开发.在这个过程中,我经常需要构建5个容器(1个用于web服务器,4个用于postgres,redis,mongo等).Web服务器容器配置为包含其他容器的链接,它有自己的ENV vars,来自开发主机的挂载卷.
问题是我不需要web容器来运行服务器本身.这Istead我需要Exec的/etc/bash与-it正在创建的所有相关容器后,Web容器内的选项.这就是为什么,我的web容器的dockerfile以:
CMD /bin/true
Run Code Online (Sandbox Code Playgroud)
显然,这样的容器不会运行,所以我不能使用smth之类的
docker exec -it <CONTAINER ID> /bin/bash
Run Code Online (Sandbox Code Playgroud)
"输入"它并运行node app.js或执行其他任务.
用compose作为docker-compose.yml文件的一部分来构建容器的任何方法,但是稍后使用-it选项运行/ etc/bash?
顺便说一句,当然我可以手动启动一个单独的Web容器
docker run \
--link postgres
--link ...
-e "NODE_ENV=development" \
-e ... \
...
...
..
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我需要在每次开发应用程序时附加所有链接,环境变量,卷等作为论据.
Jan*_*zki 12
看起来docker-compose run会成为你的朋友.从docker撰写文档:
对服务运行一次性命令.例如,以下命令启动Web服务并将bash作为其命令运行.
$ docker-compose run web bash
该命令docker-compose run <service-name>还确保所有必需的容器(例如提供卷和链接的容器)将在容器之前启动<service-name>(如果它们尚未运行).
如果您使用任何端口映射,您可以考虑使用docker-compose run --service-ports <service-name>.如果没有该选项,docker-compose则仅在使用时映射端口docker-compose up.
与docker run您一样,也可以使用该--rm选项在完成容器后删除容器.
如果您的图像使用ENTRYPOINT,你应该考虑在你重写此docker-compose.yml用entrypoint: /bin/bash.
| 归档时间: |
|
| 查看次数: |
7510 次 |
| 最近记录: |