E qual seria a estratégia para não deixar as credenciais do banco de dados visíveis em nosso repositório? (no caso do curso, lá no arquivo docker-compose.yml) Isso seria feito usando segredos também?
E qual seria a estratégia para não deixar as credenciais do banco de dados visíveis em nosso repositório? (no caso do curso, lá no arquivo docker-compose.yml) Isso seria feito usando segredos também?
Oi, Jonas. Tudo bem?
No caso de credenciais expostas no código da aplicação, você poderia usar uma substituição de texto. No caso do docker-compose.yml, você poderia colocar no local onde fica a senha um texto para ser subsituído, como PASSWORD, utilizar a action find-and-replace para detectar esse texto e trocar para um valor que esteja nos segredos do github. Algo assim:
docker-compose.yml
version: '3'
services:
postgres:
image: "postgres"
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD=root
- POSTGRES_DB=root
ports:
- "5432:5432"
volumes:
- /postgres-data:/var/lib/postgresql/data
pgadmin-compose:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: "gui@alura.com"
PGADMIN_DEFAULT_PASSWORD: "PASSWORD"
ports:
- "54321:80"
depends_on:
- postgres
E no go.yml adicionar um passo para substituir o conteúdo do arquivo com o segredo, tendo adicionado um segredo no github como PASSWORD_DB:
- name: Find and Replace
uses: jacobtomlinson/gha-find-replace@v2
with:
find: "PASSWORD"
replace: ${{ secrets.PASSWORD_DB }}
regex: false
Uma outra possibilidade seria utilzar um gerenciador de segredos externo tipo o Vault se não quiser colocar o segredo dentro do github e utilizar uma action de integraçhttps://github.com/hashicorp/vault-action.
Mas acho que a abordagem geral seria essa de colocar um placeholder no arquivo que contem o segredo e substituir em tempo de execução da pipeline.
Espero ter ajudado. Bons estudos!