1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:Dockerのエントリーポイントスクリプト(docker-entrypoint.sh)を作成し、ローカルで動作確認してみた

Last updated at Posted at 2025-02-18

はじめに

Dockerを活用する際、コンテナの起動時に特定の処理を実行する必要がある場合があります。

そのようなケースで役立つのが エントリーポイントスクリプト(docker-entrypoint.sh) です。

本記事では、docker-entrypoint.sh の基本的な使い方から、実践的な活用方法までを詳しく解説します。

Dockerエントリーポイントスクリプトとは?

docker-entrypoint.sh は、Dockerコンテナが起動する際に最初に実行されるスクリプトです。

通常、コンテナの初期設定や環境変数の設定、アプリケーションの起動などを行うために使用されます。

エントリーポイントスクリプトを使用するメリット

  • 環境変数の適用:環境変数を動的に設定し、アプリケーションに渡すことができる。
  • 実行前処理の追加:データベースのマイグレーションや設定ファイルの自動生成が可能。
  • CMDとの組み合わせ:Dockerfileの CMD に渡されたコマンドを適切に処理できる。

ローカル環境で簡単に試す

ローカルで docker-entrypoint.sh を試すのは非常に簡単です。以下の手順で動作確認できます。

  1. docker-entrypoint.sh を作成する
#!/bin/sh
set -e

echo "Hello from docker-entrypoint.sh!"
exec "$@"
  1. 簡単な 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"]
  1. コンテナをビルド・実行する
docker build -t my-entrypoint-test .
docker run --rm my-entrypoint-test

実際のターミナル画面

Screenshot 2025-02-19 at 7.19.11.png

これを実行すると、エントリーポイントスクリプトが動作し、Hello from docker-entrypoint.sh! のメッセージが表示された後に Container started と出力されます。

実際のターミナル画面

Screenshot 2025-02-19 at 7.19.54.png

exec "$@" の意味

エントリーポイントスクリプトの最後で exec "$@" を実行することで、CMD に渡されたコマンドを実行しつつ、シェルプロセスを PID 1 に置き換えることができます。

これにより、適切なシグナルの受信やコンテナの正常な終了が保証されます。

まとめ

docker-entrypoint.sh を活用することで、Dockerコンテナの動作を柔軟にカスタマイズできます。特に、環境変数の設定や実行前処理を行う場合に便利です。

ポイント

  • ENTRYPOINT を使うとコンテナの起動時に必ずスクリプトを実行できる。
  • exec "$@" を活用して適切にプロセスを管理する。
  • 簡単な Dockerfile を作成すれば、ローカル環境ですぐに試すことができる。

これらを活用して、よりスマートな Docker コンテナの設計を行いましょう!

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?