はじめに
Dockerを活用する際、コンテナの起動時に特定の処理を実行する必要がある場合があります。
そのようなケースで役立つのが エントリーポイントスクリプト(docker-entrypoint.sh) です。
本記事では、docker-entrypoint.sh
の基本的な使い方から、実践的な活用方法までを詳しく解説します。
Dockerエントリーポイントスクリプトとは?
docker-entrypoint.sh
は、Dockerコンテナが起動する際に最初に実行されるスクリプトです。
通常、コンテナの初期設定や環境変数の設定、アプリケーションの起動などを行うために使用されます。
エントリーポイントスクリプトを使用するメリット
- 環境変数の適用:環境変数を動的に設定し、アプリケーションに渡すことができる。
- 実行前処理の追加:データベースのマイグレーションや設定ファイルの自動生成が可能。
-
CMDとの組み合わせ:Dockerfileの
CMD
に渡されたコマンドを適切に処理できる。
ローカル環境で簡単に試す
ローカルで docker-entrypoint.sh
を試すのは非常に簡単です。以下の手順で動作確認できます。
-
docker-entrypoint.sh
を作成する
#!/bin/sh
set -e
echo "Hello from docker-entrypoint.sh!"
exec "$@"
- 簡単な
Dockerfile
を作成する
FROM alpine:latest
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["echo", "Container started"]
- コンテナをビルド・実行する
docker build -t my-entrypoint-test .
docker run --rm my-entrypoint-test
実際のターミナル画面
これを実行すると、エントリーポイントスクリプトが動作し、Hello from docker-entrypoint.sh!
のメッセージが表示された後に Container started
と出力されます。
実際のターミナル画面
exec "$@"
の意味
エントリーポイントスクリプトの最後で exec "$@"
を実行することで、CMD に渡されたコマンドを実行しつつ、シェルプロセスを PID 1
に置き換えることができます。
これにより、適切なシグナルの受信やコンテナの正常な終了が保証されます。
まとめ
docker-entrypoint.sh
を活用することで、Dockerコンテナの動作を柔軟にカスタマイズできます。特に、環境変数の設定や実行前処理を行う場合に便利です。
ポイント:
-
ENTRYPOINT
を使うとコンテナの起動時に必ずスクリプトを実行できる。 -
exec "$@"
を活用して適切にプロセスを管理する。 - 簡単な
Dockerfile
を作成すれば、ローカル環境ですぐに試すことができる。
これらを活用して、よりスマートな Docker コンテナの設計を行いましょう!