HOME > > > >

MySQL ファイルからインポート

laradock環境でローカルマシンのsqlファイルをMySQLに流し込みたい場合。
こんな感じでコンテナが起動している。

  1. $ docker ps
  2. CONTAINER ID        IMAGE                 COMMAND
  3. 83a350a8c22c        laradock_mysql        "docker-entrypoint.s…"
  4. cd485823dd8c        laradock_nginx        "/bin/bash /opt/star…"
  5. 1bc92dd9085a        laradock_php-fpm      "docker-php-entrypoi…"
  6. 40c24fb2af94        laradock_phpmyadmin   "/docker-entrypoint.…"
  7. 4f9d280f1124        laradock_workspace    "/sbin/my_init"

MySQLのコンテナにマウントパスを設定

初期状態ではMySQLコンテナにはマウントパスが設定されていないのでdocker-compose.ymlで設定する。
${APP_CODE_PATH_CONTAINER}は.envで/var/wwwが設定されているものとする。

docker-compose.yml

  1. ### MySQL ################################################
  2.     mysql:
  3.       build:
  4.         context: ./mysql
  5.         args:
  6.          - MYSQL_VERSION=${MYSQL_VERSION}
  7.       environment:
  8.        - MYSQL_DATABASE=${MYSQL_DATABASE}
  9.         - MYSQL_USER=${MYSQL_USER}
  10.         - MYSQL_PASSWORD=${MYSQL_PASSWORD}
  11.         - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
  12.         - TZ=${WORKSPACE_TIMEZONE}
  13.       volumes:
  14.        - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
  15.         - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  16.         - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} # 追記箇所
  17.       ports:
  18.        - "${MYSQL_PORT}:3306"
  19.       networks:
  20.        - backend
  21.       command: --innodb-use-native-aio=0
  22.       user: "1000:50"

MySQLコンテナ再起動

  1. $ docker-compose up -d mysql

ファイルからインポート

コマンドライン

  1. $ docker exec -it 83a350a8c22c bash -c "mysql -udefault -psecret default < /var/www/schema.sql"

MySQLコンテナにログインしてインポート

  1. $ docker exec -it laradock_mysql_1 bash
  2. I have no name!@83a350a8c22c:/$ mysql -udefault -psecret default < /var/www/schema.sql
Docker Books