导入data.sql MySQL Docker容器

如果我有一个data.sql,我怎么可以导入数据库到我的mysqldocker容器? 我如何导入数据库数据。 在被docker化的世界里,这增加了一层复杂性。 请一些方法。

这里我的docker-compose.yml:

nginx: build: ./nginx/ container_name: nginx-container ports: - 80:80 links: - php volumes_from: - app-data php: build: ./php/ container_name: php-container expose: - 9000 links: - mysql volumes_from: - app-data app-data: image: php:7.0-fpm container_name: app-data-container volumes: - ./www/html/:/var/www/html/ command: "true" mysql: image: mysql:latest container_name: mysql-container ports: - 3306:3306 volumes_from: - mysql-data environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: name_db MYSQL_USER: user MYSQL_PASSWORD: password mysql-data: image: mysql:latest container_name: mysql-data-container volumes: - /var/lib/mysql command: "true" 

使用卷装载将您的转储挂载到/docker-entrypoint-initdb.d/yourdump.sql

 mysql: image: mysql:latest container_name: mysql-container ports: - 3306:3306 volumes_from: - mysql-data - ./dump.sql:/docker-entrypoint-initdb.d/dump.sql environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: name_db MYSQL_USER: user MYSQL_PASSWORD: password 

这将在容器启动时导入转储,请参阅https://hub.docker.com/_/mysql/下的“初始化新实例”

附加提示:停止使用docker-compose.yml v1 – 它的可怕:)

之后您可以导入数据库:

docker exec -i mysql-container mysql -uuser -ppassword name_db < data.sql