Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konfigurowanie MySQL i importowanie zrzutu w Dockerfile

Najnowsza wersja oficjalnego obrazu dokera mysql umożliwia importowanie danych przy starcie. Oto mój plik 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

Tutaj mam mój data-dump.sql pod docker/data który jest względny do folderu, z którego działa docker-compose. Montuję ten plik sql w tym katalogu /docker-entrypoint-initdb.d na pojemniku.

Jeśli chcesz zobaczyć, jak to działa, spójrz na ich docker-entrypoint.sh w GitHubie. Dodali ten blok, aby umożliwić importowanie danych

    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

Dodatkowa uwaga, jeśli chcesz, aby dane były utrwalane nawet po zatrzymaniu i usunięciu kontenera mysql, musisz mieć osobny kontener danych, jak widać w docker-compose.yml. Zawartość pliku Dockerfile kontenera danych jest bardzo prosta.

FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8

VOLUME /var/lib/mysql

CMD ["true"]

Kontener danych nie musi być nawet w stanie początkowym, aby był trwały.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykonać zapytanie SQL rodzic-dziecko dla określonego formatu JSON?

  2. Jak mogę przechowywać symbol '€' w MySQL używając PHP?

  3. hibernate, mysql, glassfish v3 i źródło danych JTA

  4. Czy naprawdę muszę zrobić mysql_close()

  5. Laravel 5 PDOException nie może znaleźć sterownika