Importar datos.contenedor de Docker sql MySQL
Si tengo un dato.sql, ¿cómo puedo importar la base de datos a mi contenedor de docker mysql? Cómo puedo importar datos de la base de datos. En un mundo dockerizado, esto añade una capa de complejidad. algunos métodos, por favor.
Aquí mi 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"
4 answers
Parece que no puedo hacer que esto funcione con la última versión de mysql o mysql:5.7. Así que uso MariaDB en su lugar. Aquí está mi código docker-compose.yaml
.
version: '3'
services:
mysql:
image: mariadb:10.3
container_name: mariadb
volumes:
- container-volume:/var/lib/mysql
- ./dump.sql:/docker-entrypoint-initdb.d/dump.sql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: name_db
ports:
- "3306:3306"
volumes:
container-volume:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-25 11:06:03
Puede importar la base de datos después:
docker exec -i mysql-container mysql -uuser -ppassword name_db < data.sql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-10 08:22:49
Monte su volcado bajo /docker-entrypoint-initdb.d/yourdump.sql
usando un montaje de volumen
mysql:
image: mysql:latest
container_name: mysql-container
ports:
- 3306:3306
volumes:
- ./dump.sql:/docker-entrypoint-initdb.d/dump.sql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: name_db
MYSQL_USER: user
MYSQL_PASSWORD: password
Esto importará el volcado al inicio del contenedor, consulte https://hub.docker.com/_/mysql/ en "Inicializar una nueva instancia"
Pista adicional: Deje de usar docker-compose.yml v1-es horrible:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-22 04:52:16
Otra opción si no desea montar un volumen, pero desea volcar un archivo desde su máquina local, es canalizar cat yourdump.sql
. Así:
cat dump.sql | docker exec -i mysql-container mysql -uuser -ppassword db_name
Véase: https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-31 22:35:00