yourknightmares
yourknightmares

Reputation: 323

How can I use local mysql data in a mysql container created through docker-compose

My company has been working with local setups of our mysql database for years. We have recently decided to adopting a containerized approach to local development, and we want to add the database into being run in a container. The issue is, because all of our data is already set up locally, we want to be able to just use the same data in the mysql container. I have tried using volumes to mount the directory storing all the mysql data into the container to no avail. Has anyone had success with doing this?

db part of docker-compose.yml:

db:
    image: mysql:5.6
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: 1
    volumes:
      - /usr/local/mysql/data:/var/lib/mysql

I am able to get mysql running fine and am able to connect to it easily from my local machine, but when I connect, none of the local databases that already exist are there. Is there something that I'm overlooking?

Upvotes: 0

Views: 723

Answers (1)

CaioT
CaioT

Reputation: 2211

@yourknightmares,

So I just ran a test and it worked for me. Here is what I did:

docker-compose.yml

version: "3.9"
services:
  nginx:
    image: nginx:latest
    ports:
      - "9999:9999"
    command: tail -f /dev/null
    volumes:
      - "/etc/nginx/nginx.conf:/opt/nginx/nginx.conf"

In my host machine, I have the file at /etc/nginx/nginx.conf , then:

$ docker-compose up -d
$ docker exec -it 02ba7032d699 bash
$ root@02ba7032d699:/# cat /opt/nginx/nginx.conf
#hello

The file was mounted just fine from the host to the container. I would suggest you to do the same exercise just for troubleshooting purposes. Also, have you looked at the container logs with docker logs container_id?

Upvotes: 1

Related Questions