3
respostas

Mysql e Dockerfile

Boa noite,

No curso de Docker, foi apresentado uma solução envolvendo um dockerfile contendo configurações de uma instancia node, que posteriormente se comunicava com uma base mongodb. Na instancia node havia uma aplicação em node.js com o adapter mongo.

Nesse cenário, a aplicação se encarrega se invocar o mongo e criar uma entidade no db, mas e quando estamos trabalhando com banco de dados relacional (mysql por exemplo) e precisamos subir a instancia de banco de dados já com tabelas e seus relacionamentos ?

Achei o seguinte material, mas gostaria de saber se existe uma maneira mais prática https://stackoverflow.com/questions/29145370/how-can-i-initialize-a-mysql-database-with-schema-in-a-docker-container

Abs!

3 respostas

Olá Arthur,

Nesse caso uma das alternativas seria montar um script com o schema do seu banco e passar para o container do MySQL:

$ docker exec mysql container sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /diretório/databases.sql

Uma outra alternativa seria você subir seu container do MySQL e entrar nele para fazer a configuação:

docker exec -it mysql sh

E depois colocar:

mysql -u [usuario] -p [senha]

Feito isso, você deverá ser capaz de criar banco e tabelas no MySQL como faria atuando diretamente no seu host.

Abs

Ola Rafael, obrigado pela resposta.

Uma dúvida, é possível passar scripts através de um docker-compose?

Abs

Olá Arthur, tudo bem?

Seria possível sim, estou colocando abaixo um exemplo que encontrei no github para criação de um container do wordpress, o script estaria abaixo da chave command :

  wordpress:
    image: wordpress:latest
    volumes:
     - "./wp-init.sh:/usr/local/bin/apache2-custom.sh"
    ports:
    - 80:80
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: wordpress
    command: 
    - apache2-custom.sh

Abs

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software