Reputation: 179
We have a Rails app with MySQL as DB. The db
part of docker-compose.yml
looks like
db:
image: mysql
env_file:
- ma.env
volumes:
- ./dump-db:/docker-entrypoint-initdb.d
- ./my.cnf:/etc/mysql/my.cnf
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_HOST=
and under ./dump-db
folder there actually is an sql-dump of our db.
Problem is, we need to have that exact dump loaded each and every time docker-compose up
is run. MySQL docker image works in such a way, that it stores it's data on host machine and therefore your db-service is not stateless.
What we need is that db
service discarded all changes done within docker-compose up
previous run and fresh-started with that exact dump.
Upvotes: 3
Views: 17681
Reputation: 179
SOLVED
actually, ideas above gave me some insight to RTM and here goes
/var/lib/mysql
should be mounted on host. docker-compose up --force-recreate db
Upvotes: 3
Reputation: 11828
If you don't want to keep the data each time that you execute the docker-compose up
you have to remove the volumes created by the execution of this command.
To achieve that you can execute the following command, that will remove the db
service with the volumes declared in the volumes
section.
docker-compose down -v db
Upvotes: -1