При создании контейнера для моего Go приложения возникают проблемы с переменными среды.
На моем локальном компьютере я могу сделать следующее:
export GIN_MODE=release
go build -a
Это скомпилирует мое приложение в способ, при котором библиотека с именем GIN будет замечать env-переменную GIN_MODE и вести себя по-другому.
Когда я запускаю приложение, оно будет сообщать
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
, если эта ENV-переменная не была установите и он пропустит это предупреждение, если переменная GIN_MODE была установлена правильно.
Однако в Docker это не будет работать таким образом.
В моем Dockerfile
я написал эти speci c строк кода:
# Build the Go app
ENV GIN_MODE=release
RUN CGO_ENABLED=0 GOOS=linux go build -v -a -installsuffix cgo -o main .
Я также пытался передать переменную непосредственно в операторе RUN:
RUN GIN_MODE=release CGO_ENABLED=0 GOOS=linux go build -v -a -installsuffix cgo -o main .
Переменная никогда не будет видна оператору go-build
.
Как мне этого добиться?