Mla*_*den 17 docker-compose docker-entrypoint
我只是想重命名一些文件,而不覆盖 docker 拉入的 wordpress 图像中的命令。在 docker-compose.yml 中,我尝试使用“command”和“entrypoint”来运行 bash 命令,两者基本上都会中断正在执行的操作发生在图像内部,但一切都失败了。
在容器启动后,您可以通过三种主要方式运行命令:
docker exec -d someContainer some command,CMD ["some", "command"]你的 Dockerfilecommand: some commanddocker-compose 文件如果这些都不适合你,那么你可能做错了什么。command一个常见的错误是在 docker-compose 文件中使用多个,如下所示:
version: '3.8'
services:
someService:
command: a command
command: another command
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为最后一个命令覆盖了上面的命令,你应该做的是连接命令:
version: '3.8'
services:
someService:
command: a command && another command
Run Code Online (Sandbox Code Playgroud)
看看这个问题。
编辑:我忘记包括的一件事是,上面相同的行为对于Dockerfile 中的CMD来说是正确的,你不能这样做:
CMD ["some", "command"]
CMD ["another", "command"]
Run Code Online (Sandbox Code Playgroud)
相反,您应该连接命令,就像 docker-compose 一样:
CMD ["some", "command", "&&", "another", "command"]
Run Code Online (Sandbox Code Playgroud)
但如果你有很多命令,这会很无聊,所以另一种方法是使用包含你需要的所有命令的 shell 脚本,并在 Dockerfile 中执行它:
#!/bin/sh
# bash file with your commands
run wordpress && rename files && do something else
Run Code Online (Sandbox Code Playgroud)
# later in your Dockerfile
CMD ["sh", "/path/to/file.sh"]
Run Code Online (Sandbox Code Playgroud)
由于您没有提供任何代码,所以很难说,而且,也许您可以RUN command to rename在 Dockerfile 中用作最后一个命令(如果您正在使用它,就在 CMD 之前),以在构建时重命名这些文件(恕我直言,这使更多这是有道理的,因为这是你在构建图像时应该做的事情)。因此,如果您需要更多帮助,请也包含您的代码。
| 归档时间: |
|
| 查看次数: |
40982 次 |
| 最近记录: |