Dockerfile
FROM centos:7
COPY docker-entrypoint.sh /data/
ENTRYPOINT ["/data/docker-entrypoint.sh"]
docker-entrypoint.sh
exec /usr/sbin/init && systemctl restart autofs %% python /data/myapp.py
我需要将/usr/sbin/init
作为第一个命令运行,然后运行后续命令,如systemctl restart autofs
和python myapp.py
我似乎无法让docker-entrypoint.sh中的所有内容都正常工作,因为/usr/sbin/init
没有返回
如果我将docker-entrypoint.sh更改为
/usr/sbin/init &
systemctl restart autofs && python /data/myapp.py
它失败,并在d-bus中出现错误
当"docker run“被执行时,我该怎么做才能让容器按该顺序运行/usr/sbin/init
、systemctl restart autofs
和python /data/myapp.py
?
在执行/usr/sbin/init
之后,有没有其他方法来运行命令?我试过将systemctl作为CMD放入Dockerfile
FROM centos:7
ENTRYPOINT ["/usr/sbin/init"]
CMD ["systemctl restart autofs"]
但是CMD永远不会被执行
发布于 2018-02-10 20:07:06
声明
ENTRYPOINT ["/usr/sbin/init"]
CMD ["systemctl"]
将导致:
/usr/sbin/init systemctl
换句话说,ENTRYPOINT
指令设置可执行文件,该文件用于执行COMMAND
指令中给定的命令。
默认ENTRYPOINT
为/bin/sh -c
,因此如果/data/docker-entrypoint.sh
包含以下内容,则/bin/sh -c /data/docker-entrypoint.sh
应该可以工作:
/usr/sbin/init
systemctl restart autofs
python /data/myapp.py
这意味着:您不必更改ENTRYPOINT
如果将ENTRYPOINT
更改为/data/docker-entrypoint.sh
,则它应包含以下内容:
/usr/sbin/init
systemctl restart autofs
python /data/myapp.py
# run the command given as arguments from CMD
exec "$@"
https://stackoverflow.com/questions/48720049
复制相似问题