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 
                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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With