Точка входа в докер с несколькими аргументами

Я создаю Dockerfile запустить узел ethereum на контейнере Ubuntu.

Я хочу последовательно запускать следующие команды оболочки последовательно в контейнере.

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

Я создал ниже Entrypoint в 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"] 

может кто-нибудь исправить ENTRYPOINT для приведенной выше команды оболочки.

1 ответ

Решение

Поместите две команды в сценарий оболочки, COPY сценарий оболочки в Dockerfile, затем используйте этот сценарий оболочки в качестве точки входа.

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

Dockerfile:

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

Обязательно chmod +x сценарий, либо до копирования или в RUN команда в Dockerfile.

Другие вопросы по тегам