簡體   English   中英

Dockerfile 中的 CMD 后跟 ENTRYPOINT 的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM