我正在尝试为s3cmd写一个docker镜像。当我通过docker-compose运行从Dockerfile构建的映像时,容器会在docker compose中的命令运行之前退出。
Docker文件
FROM alpine:latest
COPY ./.s3cfg /s3cmd_repo/.s3cfg.example
COPY entrypoint.sh /s3cmd_repo/
RUN chmod +x /s3cmd_repo/entrypoint.sh
ENTRYPOINT ["/s3cmd_repo/entrypoint.sh"]
入口点
#!/bin/sh
echo "--- INITIALIZING SS# CONFIGURATIONS ---"
envsubst < /s3cmd_repo/.s3cfg.example > ~/.s3cfg
s3cmd ls
echo "=== END ==="
docker-compose.yml
version: '3'
services:
execution:
image: s3
command: s3cmd ls
我也尝试使用tail -f /etc/issue
,容器没有退出,但是docker compose命令无法运行。
当我通过docker-compose运行从Dockerfile构建的映像时,容器会在docker compose中的命令运行之前退出。
这是预期的。s3cmd ls
docker compose file:中的命令将附加到s3'Dockerfile的入口点。
因此执行了类似的操作:
/s3cmd_repo/entrypoint.sh s3cmd ls
在sh脚本执行期间,两个args只会被忽略。
要执行多个命令以启动容器,您无需定义ENTRYPOINT。而是指定要在docker-compose文件中运行的命令:
version: '3'
services:
execution:
image: s3
command: sh -c "/s3cmd_repo/entrypoint.sh && s3cmd ls"
请注意sh
,bash
它不适用于任何Linux发行版(例如Alpine)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句