docker-compose的开发工作stream程:运行dev-version容器
我有一个非常典型的docker-compose setup:一个自定义的web容器和一个直接来自docker hub的数据库容器。 对于开发,我的主机目录被挂载到Web泊坞窗,所以我不必每次做一个小小的改变重build容器。 Web服务器是一个Passenger(独立)服务一个ruby应用程序。
当我运行它,我有我的数据库运行,我的Web服务运行(端口3000),都很好。 但是,如果我做了一个改变,没有什么变化,因为Web服务器(乘客)需要重新启动。 我希望能够启动一个简单的轻量级开发服务器,例如我会在进行更改时手动重新启动。
我试过的:
- 启动一个新的Web容器(
docker-compose run web ...
)不会公开新容器的任何端口。 所以,我无法连接到Web服务器。 - 用Docker直接启动一个新的Web容器(
docker run web -p 5000:5000 image_name ...
)。 我们放弃docker-composefunction,容器没有手动绑定链接到数据库。 - 每次重新启动docker构成(快速启动)。 每次我的数据库都重新启动的时候,我需要继续运行。
- 使用
--service-ports
arg:不起作用,因为已经使用了端口3000 -
docker exec
我的开发服务器上的Web容器:必须在另一个端口上运行,所以不会被暴露。 -
docker exec
kill
我的networking服务器:实际上它工作(重新启动),但我不太喜欢这个解决scheme。 首先,因为服务器仍然是乘客,我更喜欢一个轻量级的Web服务器(如thin
)。 其次,我发现它不是很干净连接杀死docker exec ...
的服务器与docker exec ...
- 更改我的
Dockerfile
以通过自动重新启动的开发Web服务器来取代Passenger:我喜欢Dockerfile
与prod服务器,testing和dev上的相同。
你会有一个简单的方法启动我的Web容器,打开5000端口,我将启动/重新启动一个开发Web服务器的shell?
我使用两个docker-compose文件,一个用于开发,一个用于生产。
在开发docker-compose文件的时候,你可以使用command
从Dockerfile中覆盖CMD
,这样你就可以很容易的使用bash
来创build一个shell或者使用一个自动重启服务器。
要使用你自定义的docker-compose文件吗: docker-compose -f dev.yml ...
为此:
每次重新启动docker-compose(快速启动)。 每次我的数据库都重新启动的时候,我需要继续运行。
如果你做docker-compose up --no-deps web
它不会重新启动你的数据库
- 在alpine linux上运行npm install时出现奇怪的错误
- 在apt-get升级过程中防止Docker-Engine重启
- 如何在Docker上设置#Spark /#Kafka?
- 已经使用Gitlab-ci codeclimatepipe道docker容器名称
- 提取Docker.io映像的根文件系统并在chroot中使用它是安全的吗?
- 将Gunicorn Systemd文件传递到Dockerfile
- IBM / secure-gateway-client docker使用–F(acl文件)选项运行
- 链接到另一个docker容器时,来自postgresql的二进制文件不可用
- 无法连接到主机的MySQL的docker容器