加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用docker-compose构建容器,但稍后使用-it选项运行/ etc / bash

发布时间:2020-12-16 03:33:24 所属栏目:安全 来源:网络整理
导读:我正在使用docker-compose进行开发.在这个过程中,我经常需要构建5个容器(1个用于web服务器,4个用于postgres,redis,mongo等). Web服务器容器配置为包含其他容器的链接,它有自己的ENV vars,来自开发主机的挂载卷. 问题是我不需要web容器来运行服务器本身.在创

我正在使用docker-compose进行开发.在这个过程中,我经常需要构建5个容器(1个用于web服务器,4个用于postgres,redis,mongo等). Web服务器容器配置为包含其他容器的链接,它有自己的ENV vars,来自开发主机的挂载卷.

问题是我不需要web容器来运行服务器本身.在创建所有依赖容器之后,我需要在web容器内使用-it选项执行/ etc / bash.这就是为什么,我的web容器的dockerfile以:

CMD /bin/true

显然,这样的容器不会运行,所以我不能使用smth之类的

docker exec -it 

“输入”它并运行节点app.js或其他一些任务.

使用compose作为docker-compose.yml文件的一部分来构建容器的任何方法,但是稍后使用-it选项运行/ etc / bash?

顺便说一句,当然我可以手动启动一个单独的Web容器

docker run 
--link postgres
--link ...
-e "NODE_ENV=development" 
-e ... 
...
...
..

但在这种情况下,我需要在每次开发应用程序时附加所有链接,环境变量,卷等作为论据.

最佳答案
看起来像docker-compose run将成为你的朋友.从docker compose docs:

Runs a one-time command against a service. For example,the following command starts the web service and runs bash as its command.

$docker-compose run web bash

命令docker-compose run< service-name>还确保所有必需的容器(例如提供卷和链接的容器)将在容器< service-name>之前启动,如果它们尚未运行.

如果您使用任何端口映射,您可以考虑使用docker-compose run –service-ports< service-name>.如果没有该选项,docker-compose将仅在使用docker-compose时映射端口.

与docker run一样,您也可以使用–rm选项在完成容器后删除容器.

如果您的图像使用ENTRYPOINT,您应该考虑使用入口点:/ bin / bash在docker-compose.yml中覆盖它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读