【发布时间】:2018-02-05 06:40:18
【问题描述】:
docker compose v3
每当我运行 docker-compose up 时,我都会尝试运行一些特定于应用程序的命令,例如 composer update,让我的 docker-compose.yml 文件看起来与此类似
version: '3'
services:
app1:
image: laraedit/laraedit
ports:
- 3000:80
volumes:
- ./appfolder:/var/www/appfolder
如果我在入口点运行我的首次运行命令,它将覆盖默认 laraedit/laraedit 正在运行的所有命令。 (至少我是这么认为的,因为当我的入口点命令完成时容器总是停止)
我不想打扰 laraedit/laraedit 启动的过程,我只想在旁边执行几个命令。
如果我不使用 docker-compose,那么我将在本地拥有 laraedit/laraedit Dockerfile,然后我可以对其进行编辑并在其中的某处添加 RUN 语句。
但是由于我没有 Dockerfile,而且我无法在不中断容器正常启动的情况下创建入口点,所以我不知道如何自动执行每次运行这些无聊命令的过程运行docker-compose up。
我尝试过的事情:
- 添加我自己的 Dockerfile(替换 laraedit 的)
- 运行 entrypoint script(阻止 laraedit 的启动)
- 以command 运行它们(命令未执行)
【问题讨论】:
-
AFAIU,如果您不想使用“laraedit/laraedit”图像,则必须使用不同的 Dockerfile 对其进行编辑。通过新创建的 Dockerfile 创建新图像并在您的撰写文件中使用它。我也在等待答案:-)。
-
这是 github.com/laraedit/laraedit-docker/blob/master/Dockerfile 原始 dockerfile 吗?如果是这样,当覆盖
command或entrypoint时,supervisord是否正在运行? -
@ItayB 是的,这是正确的 dockerfile。当覆盖来自
docker-compose.yml的command或entrypoint值时,supervisord永远不会运行。 -
你可以做一个丑陋的 hack,在后台启动 supervisord (&),然后运行你的东西,然后在 true 时休眠 1.. 有意义吗?
-
有道理是的。但对我来说太丑陋了。
标签: docker command docker-compose dockerfile