Точка входа в докер с несколькими аргументами
Я создаю 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.