1. ホーム
  2. docker

[解決済み] docker ENTRYPOINTで複数のコマンドを実行する

2022-03-09 01:58:16

質問

カスタムtcserverのdockerイメージを構築しようとしています。しかし、ウェブサーバとtomcatの起動に問題があります。
私が理解する限り、私はENTRYPOINTを使用して欲しいコマンドを実行する必要があります。
問題は、ENTRYPOINTで複数のコマンドを実行することは可能なのか、ということです。
それとも、すべてを開始する小さなbashスクリプトを作成する必要がありますか?

基本的に私がやりたいことは。

ENTRYPOINT /opt/pivotal/webserver/instance1/bin/httpdctl start && /opt/pivotal/webserver/instance2/bin/httpdctl start && /opt/pivotal/pivotal-tc-server-standard/standard-4.0.1.RELEASE/tcserver start instance1 -i /opt/pivotal/pivotal-tc-server-standard && /opt/pivotal/pivotal-tc-server-standard/standard-4.0.1.RELEASE/tcserver start instance2 -i /opt/pivotal/pivotal-tc-server-standard

しかし、それが良い方法かどうか、また、それがうまくいくかどうかさえもわかりません。

どのように解決するのですか?

エントリーポイントで多くのコマンドを実行したい場合は、bashファイルを作成するのが一番です。例えば commands.sh このように

#!/bin/bash
mkdir /root/.ssh
echo "Something"
cd tmp
ls
...

そして、DockerFileで、エントリーポイントを commands.sh ファイルを作成します (その中ですべてのコマンドを実行します)。

COPY commands.sh /scripts/commands.sh
RUN ["chmod", "+x", "/scripts/commands.sh"]
ENTRYPOINT ["/scripts/commands.sh"]

その後、コンテナを起動するたびに commands.sh が実行され、必要なコマンドをすべて実行します。ここで見ることができるのは https://github.com/dangminhtruong/drone-chatwork