具有多个参数的 docker 入口点

Raj*_*jan 2 docker dockerfile

我正在创建Dockerfile在 ubuntu 容器上运行以太坊节点。

我想在容器中依次运行以下 shell 命令。

geth --datadir /home/ubuntu/eth-dev init /home/ubuntu/eth-dev/genesis.json 
geth --networkid 45634 --verbosity 4  --ipcdisable --rpc --port 30301 --rpcport 8545 --rpcaddr 0.0.0.0 console 2>> /home/ubuntu/eth-dev/eth.log
Run Code Online (Sandbox Code Playgroud)

我在 Dockerfile 中创建了以下入口点,我认为这是不正确的。

 ENTRYPOINT ["geth", "--datadir /home/ubuntu/eth-dev", "init /home/ubuntu/eth-dev/genesis.json", "--networkid 45634", "--verbosity 4", "--ipcdisable", "--rpc", "--port 30301", "--rpcport 8545", "--rpcaddr 0.0.0.0", "console 2>> /home/ubuntu/eth-dev/eth.log"] 
Run Code Online (Sandbox Code Playgroud)

任何人都可以更正ENTRYPOINT上述 shell 命令。

wmo*_*ell 6

将这两个命令放入一个 shell 脚本中,COPY该 shell 脚本位于 Dockerfile 中,然后使用该 shell 脚本作为入口点。

docker-entrypoint.sh:

geth --datadir /home/ubuntu/eth-dev init /home/ubuntu/eth-dev/genesis.json 
geth --networkid 45634 --verbosity 4  --ipcdisable --rpc --port 30301 --rpcport 8545 --rpcaddr 0.0.0.0 console 2>> /home/ubuntu/eth-dev/eth.log
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)

请务必在复制之前或在 Dockerfile 中的命令chmod +x中使用该脚本。RUN