Mysql
 sql >> база данни >  >> RDS >> Mysql

Настройване на MySQL и импортиране на дъмп в Dockerfile

Най-новата версия на официалния изображение на mysql docker ви позволява да импортирате данни при стартиране. Ето моя 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

Тук имам моя data-dump.sql под docker/data което е спрямо папката, от която се изпълнява docker-compose. Монтирам този sql файл в тази директория /docker-entrypoint-initdb.d върху контейнера.

Ако се интересувате да видите как работи това, погледнете техния docker-entrypoint.sh в GitHub. Те са добавили този блок, за да позволят импортиране на данни

    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

Допълнителна забележка, ако искате данните да бъдат запазени дори след като mysql контейнерът е спрян и премахнат, трябва да имате отделен контейнер за данни, както виждате в docker-compose.yml. Съдържанието на контейнера за данни Dockerfile е много просто.

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

VOLUME /var/lib/mysql

CMD ["true"]

Контейнерът с данни дори не трябва да е в начално състояние за постоянство.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. вмъкване на заявка с използване на цикъл foreach, получаване на неуловена грешка:извикване на членска функция execute() на boolean

  2. Получаване на топ 3 от таблицата на Mysql въз основа на условие/стойност

  3. Достатъчен ли е mysqli_real_escape_string, за да се избегне SQL инжекция или други SQL атаки?

  4. Защо е null<>null=null в mysql

  5. MySQL Alter table причинява грешка:Невалидно използване на NULL стойност