.envからdockerの実行環境に環境変数を渡す例
環境
go1.13.8
Docker version 19.03.8
ディレクトリ構成
Dockerfile docker-compose.yaml go.mod main.go .env .env2
main.go
package main import ( "fmt" "os" ) func main() { fmt.Println("hello world") fmt.Println(mustGet("TEST")) } func mustGet(arg string) string{ env := os.Getenv(arg) if env == ""{ panic("env not found") } return env }
Dockerfile
FROM golang:latest WORKDIR /app COPY go.mod ./ RUN go mod download COPY . . RUN go build -o main . CMD ["./main"]
docker-comose.yaml
version: "3" services: web: build: context: . dockerfile: ./Dockerfile env_file: .env
.env
TEST=hoge
.env2
TEST=hoge2
結果
$go run main.go panic $TEST=hoge go run main.go hello world hoge $docker build . -t test $docker run test panic $docker run --env-file .env test hello world hoge $docker run --env-file .env2 test hello world hoge2 $docker-compose up web_1 | hello world web_1 | hoge