[英]Problem with CMD followed by ENTRYPOINT in Dockerfile
我有一個看起來像這樣的 Dockerfile:
FROM quorumengineering/quorum:latest
RUN apk add nodejs npm
RUN cd ~
RUN npm i axios
COPY watcher.js .
ENTRYPOINT [ "geth", "--raft", "--raftjoinexisting", "1" ]
CMD "node watcher.js"
我想要實現的是使用參數運行 geth 然后運行 nodejs app watcher.js
使用命令正確構建容器鏡像:
docker build -t somename .
它使用以下命令正確啟動:
docker run -d somename
但是當我docker exec -it containerID sh
並運行 ps 我得到:
/ # ps
PID USER TIME COMMAND
1 root 0:01 geth --raft --raftjoinexisting 1 /bin/sh -c "node watcher.js"
16 root 0:00 sh
23 root 0:00 ps
看起來它在一行中運行兩個命令...... geth
命令運行完美,但 nodejs 應用程序沒有啟動...... docker docker logs
沒有給我任何有趣的輸出。
入口點設置在容器運行時將首先執行的命令和參數。
CMD 在執行容器時提供默認值。 這些將在入口點之后執行。
Docker 推薦使用 ENTRYPOINT 來設置鏡像的主命令,然后使用 CMD 作為默認標志。 這是一個使用這兩個指令的示例 Dockerfile。
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
我建議您使用所需的啟動命令創建一個 bash 腳本,將其添加到容器中並在 CMD 或 ENTRYPOINT 中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.