3
respostas

O pipeline não funcionou com a variável DB_HOST setada para 'mysql'.

Ao seguir as instruções do vídeo e setar a variável DB_HOST com o valor 'mysql' o pipeline quebrou com o erro "Unknown MySQL server host 'mysql' (-2)".

Também tentei com o valor 'db', inspirado no nome dado ao container de banco no arquivo docker-compose.yml mas tive o mesmo erro: "Unknown MySQL server host 'db' (-2)"

Qual é o valor correto para esta variável?

Como um teste de sanidade, eu subi os containers via docker-compose, conectei na máquina 'web' e de lá consegui pingar a máquina 'db' pelo nome (comando 'ping db'). Tentei o mesmo usando o nome de máquina 'mysql' e não funcionou. Mas o pipeline não funcionou com nenhum dos dois.

Caso seja necessário, coloco abaixo o conteúdo do meu .gitlab-ci.yml:

image: docker:stable

stages:
  - pre-build
  - build
  - test
  - deploy

variables:
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""

build-docker:
  services:
    - docker:dind
  before_script:
    - docker info
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
  stage: pre-build
  script:
    - docker build -t minha-imagem .
    - docker tag minha-imagem bene20/minha-imagem:latest
    - docker push bene20/minha-imagem:latest

build-project:
  image: bene20/minha-imagem:latest
  services:
    - docker:dind
    - mysql:5.7
  variables:
    MYSQL_USER: devops_dev
    MYSQL_PASSWORD: mestre
    MYSQL_DATABASE: todo_dev
    MYSQL_ROOT_PASSWORD: senha
    DB_HOST: 'db'
    DB_NAME: 'todo_dev'
    DB_USER: 'devops_dev'
    DB_PASSWORD: 'mestre'
    DB_PORT: '3306'
    SECRET_KEY: 'não consegui o valor. Ver aula 5.2 aos 05:08 minutos de vídeo'
  stage: build
  tags:
    - executor-tarefas
  dependencies:
    - build-docker
  script:
    - python manage.py makemigrations
    - python manage.py migrate
3 respostas

Olá Ebenézer, tudo bem? Primeiro, vamos o mais simples, que é a questão da chave SECRET_KEY, bem a grande maioria das aplicações precisam de uma chave, essa chave é utilizada internamente pra uma serie de procedimento que não convêm entrar nesse mérito agora, porém essa chave sempre fica localizada no arquivo env, então você pode verificar no seu arquivo env local e você deve encontrar essa variável SECRET_KEY, já que esse arquivo foi versionado junto com todo o restante do projeto. Fazendo isso você pode tentar fazer o push para o gitlab e qual erro você comenta aqui pra gente poder ajudar!

Prezado Jonilson, sua resposta está desalinhada com minha pergunta. A questão do SECRET_KEY já está resolvida. O problema atual é o fato de o container web não enxergar o container db. Poderia verificar, por favor?

Olá Ebenézer, peço desculpas pela demora no retorno e também pela resposta incompleta ou desalinhada com sua pergunta! Bem, você poderia fornecer os logs da execucação do job build-project na pipeline diretamente do GitLab, porque realmente o seu arquivo .gitlab-ci.yml aparentemente está correto, mais nos logs podemos identificar se o serviço do MySQL está sendo executado corretamente.

O nome do serviço é mysql e assim a variável DB_HOST deve ficar com o mesmo nome:

DB_HOST: 'mysql'

Porém precisamos verificar se realmente o serviço está sendo executado. Uma outra coisa, o job build-docker é executado normalmente ou apresenta algum erro?