Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【SRE/Docker】Dockerizeでの起動制御

docker-composeを使用する際にDBの接続を待ちたいなどがあった時に便利な Dockerize について書いていきます。

起動制御の選択肢

下記をみる限り、wait-for-itdockerize の2つが有効なようです。
Compose における起動順の制御 — Docker-docs-ja 17.06 ドキュメント

Docker Compose でMySQLが起動するまで待つ - Qiita
docker-compose upでMySQLが起動するまで待つ方法(2種類紹介) - Qiita

Dockerize

Dockerizeとは

GitHub - jwilder/dockerize: Utility to simplify running applications in docker containers

使う

dockerfiledocker-compose.yaml を修正します。

ENV DOCKERIZE_VERSION v0.6.0
RUN apk add --no-cache openssl \
    && wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz

dockerize のコマンドを docker-composeで定義します。
dockerize -wait tcp://db:5432 というコマンドで、依存関係のあるアプリケーションの起動を待つことができるようになります。

entrypoint:
  - dockerize
  - -timeout
  - 60s
  - -wait
  - tcp://mysql:3306
command: ./main # goでの実行

Dockerizeを使って他のコンテナの起動を待つ - Qiita

sanoyo
自衛隊からソフトウェアエンジニア
https://note.com/yokosano
engineerlife
技術力をベースに人生を謳歌する人たちのコミュニティです。
https://community.camp-fire.jp/projects/view/280040
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away