docker-composeでコンテナを構築する際に.envファイルを使用する方法
docker-compose build
でgit config --global user.email
とかname
とかを指定したいの。でも個人情報をDockerfile
に書くのは死んでも嫌!
そうだ!.env
を使えばなんとかなるんでは……?
で、こうなりました。
docker-compose.yml
version: '3'
services:
web:
build:
context: .
args:
- GIT_USER_EMAIL=$GIT_USER_EMAIL # ココ
- GIT_USER_NAME=$GIT_USER_NAME # ココ
volumes:
- ./src:/app
ports:
- "80:8080"
FROM bash
WORKDIR /app
ARG GIT_USER_EMAIL
ARG GIT_USER_NAME
RUN \
apk add git &&\
git config --global user.email "${GIT_USER_EMAIL}" && \
git config --global user.name "${GIT_USER_NAME}"
.env
GIT_USER_EMAIL="foobar@example.com"
GIT_USER_NAME="Foo Bar"
Dockerfile
内でARG
として変数を宣言しなければならないのが盲点でした。
なお、docker-compose.yml
で以下のように変数を波カッコで囲むと動作しないようです。
- GIT_USER_EMAIL=${GIT_USER_EMAIL}
- GIT_USER_NAME=${GIT_USER_NAME}