hiko1129's note

docker-composeで最近良くやる設定等

2020/03/20
  • gcloudのconfigをマウント(bind mount)する
  • shellの履歴をマウント(volume mount)する
  • mysqlの起動を待たせる

Qrunchに記載した、下記のログをまとめたものです。

gcloudのconfigをマウント(bind mount)する

Dockerfile(一部抜粋)で、下記のようにgcloudをインストールして、PATHを通しておいて、

FROM golang:1.13.4-alpine3.10

RUN apk add --no-cache git \
    curl \
    gcc \
    libc-dev \
    python

RUN curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-280.0.0-linux-x86_64.tar.gz && \
    tar -zxvf google-cloud-sdk-280.0.0-linux-x86_64.tar.gz -C ~ > /dev/null && \
    rm google-cloud-sdk-280.0.0-linux-x86_64.tar.gz && \
    echo 'N' | ~/google-cloud-sdk/install.sh

ENV PATH=$PATH:/root/google-cloud-sdk/bin

下記のように、docker-compose(一部抜粋)のvolumesで~/.config/gcloudを指定することで、gcloudの設定をdocker-compose内で使えるようにしています。

version: '2'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ~/.config/gcloud:/root/.config/gcloud

shellの履歴をマウント(volume mount)する

shellのhistoryの保存先を指定してコマンドの実行履歴を消えないようにしています。

version: '2'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - shell-history-data:/root/.ash_history
volumes:
  shell-history-data:
    driver: local

mysqlの起動を待たせる

下記のようなシェルを実行してdocker-compose up時に待たせるようにしています。
データベースとの疎通確認ができたら。接続してスキーマを反映させるなどの処理を自動的に実行させるようにしています。

until mysqladmin ping -u example -pexample -h mysql-development; do sleep 5; done

hiko1129

hiko1129
Twitter GitHub Qiita Qrunch Blog