具有多个参数的 docker 入口点

标签 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

我在 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"] 

任何人都可以更正上述 shell 命令的 ENTRYPOINT 吗?

最佳答案

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

docker 入口点.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

docker 文件:

COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]

确保 chmod +x 脚本,在复制之前或在 Dockerfile 中的 RUN 命令中。

关于具有多个参数的 docker 入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46336508/

相关文章:

ubuntu - docker -Ubuntu-bash : ping: command not found

docker - Kubernetes 垃圾收集失败 - FreeDiskSpaceFailed & ImageGCFailed

nginx - Docker 不会附加到图像

elasticsearch - Elasticsearch docker文件中的$ {source_elasticsearch}是什么

django - 如何让 celerybeat cron 任务在 django 应用程序的 docker 容器中运行?

curl - 库伯斯。 HTTPS API 返回 `Unauthorized`

Docker EACCES 权限被拒绝 mkdir

scala - 如何在可执行文件之前将 Java_opts 传递到 dockerfile 中的入口点?

Kubernetes - 如何将信任库路径和密码传递给 JVM 参数

docker - Docker 中的 Spring Boot