如何使用docker-compose在docker镜像和入口点之间运行命令?

时间:2017-08-28 03:33:25

标签: docker command docker-compose dockerfile

docker撰写v3

每当我运行composer update时,我都会尝试运行一些特定于应用程序的命令,例如docker-compose up,让我的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

我尝试过的事情:

1 个答案:

答案 0 :(得分:1)

您需要使用自定义图像扩展laraedit / laraedit图像。 你可以像这样简单地使用Dockerfile:

SELECT  
Application.Id, 
Application.CreationDateTime, 
Application.Status, 
[Case].Name AS CaseName

FROM Application 

LEFT JOIN [Case] ON Application.CaseId = [Case].Id

WHERE Application.CaseId = 6 AND 
      Application.Status = 5 

ORDER BY Application.CreationDateTime 
    DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY 

FROM laraedit/laraedit COPY my_entrypoint.sh /my_entrypoint.sh RUN chmod +x /my_entrypoint.sh ENTRYPOINT /my_entrypoint.sh 是一个包含初始化命令并在其末尾调用原始入口点的脚本,例如:

my_entrypoint.sh

通过阅读原始的laraedit Dockerfile

,您可以获得#!/bin/sh my_init_cmd1 my_init_cmd2 ... /original/entrypoint/script/path

我们假设您将上面的2个文件放在docker-compose.yml旁边的/original/entrypoint/script/path目录中,而不是像这样调整docker-compose.yml:

docker