Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker Compose mysql import .sql

I'm having trouble importing an .sql dump file with docker-compose. I've followed the docs, which apparently will load the .sql file from docker-entrypoint-initdb.d. However, when I run docker-compose up, the sql file is not copied over to the container.

I've tried stopping the containers with -vf flag, but that didn't work either. Am I doing something wrong in my .yml script?

I have dump.sql in the directory database/db-dump/ in the root where my compose file is.

frontend:   image: myimage   ports:    - "80:80"   links:    - mysql mysql:   image: mysql   ports:    - "3306:3306"   environment:     MYSQL_ROOT_PASSWORD: rootpass     MYSQL_USER: dbuser     MYSQL_PASSWORD: userpass     MYSQL_DATABASE: myimage_db   volumes:    - ./database/db-dump:/docker-entrypoint-initdb.d 
like image 787
GafferG Avatar asked Apr 14 '16 08:04

GafferG


2 Answers

This worked for me,

version: '3.1'  services:    db:     image: mysql     command: --default-authentication-plugin=mysql_native_password     restart: always     volumes:       - ./mysql-dump:/docker-entrypoint-initdb.d     environment:       MYSQL_ROOT_PASSWORD: example       MYSQL_DATABASE: ecommerce    adminer:     image: adminer     restart: always     ports:       - 8080:8080 

mysql-dump must be a directory. All the .sql's in the directory will be imported.

like image 157
Sridhar Sg Avatar answered Sep 27 '22 22:09

Sridhar Sg


After many attempts with the volumes setting i found a workaround

I created another image based on mysql with the following in the Dockerfile

FROM mysql:5.6  ADD dump.sql /docker-entrypoint-initdb.d 

Then removed the volumes from compose and ran the new image

frontend:   image: myimage   ports:    - "80:80"   links:    - mysql mysql:   image: mymysql   ports:    - "3306:3306"   environment:     MYSQL_ROOT_PASSWORD: rootpass     MYSQL_USER: dbuser     MYSQL_PASSWORD: userpass     MYSQL_DATABASE: myimage_db 

This way the dump is always copied over and run on startup

like image 37
GafferG Avatar answered Sep 27 '22 21:09

GafferG