- gcloudのconfigをマウント(bind mount)する
- shellの履歴をマウント(volume mount)する
- mysqlの起動を待たせる
Qrunchに記載した、下記のログをまとめたものです。
gcloudのconfigをマウント(bind mount)する
Dockerfile(一部抜粋)で、下記のようにgcloudをインストールして、PATHを通しておいて、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| 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内で使えるようにしています。
1
2
3
4
5
6
7
8
| version: '2'
services:
app:
build:
context: .
dockerfile: Dockerfile
volumes:
- ~/.config/gcloud:/root/.config/gcloud
|
shellの履歴をマウント(volume mount)する
shellのhistoryの保存先を指定してコマンドの実行履歴を消えないようにしています。
1
2
3
4
5
6
7
8
9
10
11
| 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時に待たせるようにしています。
データベースとの疎通確認ができたら。接続してスキーマを反映させるなどの処理を自動的に実行させるようにしています。
1
| until mysqladmin ping -u example -pexample -h mysql-development; do sleep 5; done
|