splor-mg / notas

Base de conhecimento
https://splor-mg.github.io/notas/main
0 stars 0 forks source link

Como usar variáveis de ambiente no docker via makefile e arquivo .env (acessar repos privados pelo DPM) #26

Open labanca opened 1 year ago

labanca commented 1 year ago

Criar um arquivo .env dentro do repositório contendo a variável de ambiente a ser passada para o make:

GITHUB_TOKEN=#your env var value here

IMPORTANTE: NÃO esquecer de adicionar o arquivo .env ao .gitignore para evitar upload de tokens, senhas e outros segredos para o github.

Realizar include do arquivo .env no makefile. Exemplo no makefile do repo volumes-loa:

.PHONY: help volumes v1 v2 v3 v4 v5 clean format rm docker v1_dcgf v1_prodemge validate check

include config.mk
include $(DOCKER_SRC_DIR)/.env 

#====================================================================
# PHONY TARGETS

dummy:
    @echo $(GITHUB_TOKEN)

Sendo DOCKER_SRC_DIR o working directory (CWD) que é obtido dentro do config.mk.

No config.mk é necessário passar parâmetro -e para o comando docker run que indicará o nome da variável de ambiente e seu valor. No caso exemplo, é o token de autenticação do github que é fornecido ao make pelos passos descritos anteriormente:

DOCKER_RUN_CMD = $(shell echo $(WINPTY) docker run -e GITHUB_TOKEN=$(GITHUB_TOKEN) --rm -ti -p 8787:8787 --mount type=bind,source=$(DOCKER_SRC_DIR),target=/home/rstudio --name volumes-loa fjuniorr/volumes:ploa2024 bash)

Com isso, container docker montado conterá a variável de ambiente especificada e poderá ser usada por ele.

Para visualizar as variáveis de ambiente com o container em execução, utilizar o comando bash printenv:

image

fjuniorr commented 1 year ago

Fazer include .env cria as variáveis no make mas não cria variáveis de ambiente acessíveis para outros programas. Pra fazer isso é necessário adicionar uma diretiva export na definição das variáveis:

export FOO = 'bar'

Vale ressaltar que bibliotecas como python-dotenv e dotenv ignoram a diretiva export e portanto também vão funcionar com esse arquivo .env.

Links