Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Configurando o MySQL e importando o dump no Dockerfile


A versão mais recente da imagem do docker mysql oficial permite importar dados na inicialização. Aqui está meu docker-compose.yml
data:
  build: docker/data/.
mysql:
  image: mysql
  ports:
    - "3307:3306"
  environment:
    MYSQL_ROOT_PASSWORD: 1234
  volumes:
    - ./docker/data:/docker-entrypoint-initdb.d
  volumes_from:
    - data

Aqui, eu tenho meu data-dump.sql em docker/data que é relativo à pasta da qual o docker-compose está sendo executado. Estou montando esse arquivo sql neste diretório /docker-entrypoint-initdb.d no recipiente.

Se você estiver interessado em ver como isso funciona, dê uma olhada no docker-entrypoint.sh no GitHub. Eles adicionaram este bloco para permitir a importação de dados
    echo
    for f in /docker-entrypoint-initdb.d/*; do
        case "$f" in
            *.sh)  echo "$0: running $f"; . "$f" ;;
            *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f" && echo ;;
            *)     echo "$0: ignoring $f" ;;
        esac
        echo
    done

Uma observação adicional, se você quiser que os dados sejam persistidos mesmo depois que o contêiner mysql for interrompido e removido, você precisa ter um contêiner de dados separado como você vê no docker-compose.yml. O conteúdo do Dockerfile do contêiner de dados é muito simples.
FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8

VOLUME /var/lib/mysql

CMD ["true"]

O contêiner de dados nem precisa estar no estado inicial para persistência.