docker mysql volume mount 하기.

Updated on

윈도우 환경에서 docker 로 mysql 를 만들어서 사용하려다보니..
volume mount 를 해야할 필요성이 생겼다.

물론 개발 및 테스트 용도이기 때문에 데이터가 그렇게 중요하지는 않지만,
연습할겸 해서 도커 볼륨을 마운트 시키는 것을 글로 작성해본다.

ubuntu에서 mysql 를 설치해서 volume 을 넣어주려고 하니..
잘 안된다..
가능은 하겠지만, 시간 쏟아부어도 안되더라..
그래서 그냥 mysql 이미지를 따로 쓰기로 했다. (당연한건가 ?)

docker-compose.yml 을 생성했고,

version: '3'

services:

  linux:
    image: linux
    ports:
      - 80:8000
      - 2500:2500
    tty: true
    links:
      - db

  db:
    restart: always
    image: mysql:5.7
    container_name: db-mysql
    ports:
      - "3306:3306"
    volumes:
      # Pass volume named mysql-data to mysql container
      - ./db/mysql_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: testdb
      MYSQL_USER: test
      MYSQL_PASSWORD: password

3306 포트를 열어줬으니, 외부에서도 접속이 가능하고,
linux 컨테이너에 links db를 연결해주었으므로,
linux 컨테이너에서 ping 으로 db 를 입력할 경우 송수신 하게 된다.
그리고, db의 컨테이너 이름을 db-mysql 로 했기 때문에
db와 db-mysql 또한 가능해졌다.

그래서 라라벨 env 파일의 DB_HOST 부분에

DB_HOST=db-mysql

로 처리해주게되면, db 컨테이너로 연결해서 사용할 수 있게 된다.

배우기는 조금 복잡하고 어렵지만, 한번 배우면 너무나도 편리한 도커…
CentOS8 에서는 podman ?을 사용한다는데,, 그때에 또 한번 더 복잡할 것 같아서 걱정이긴 하다..

그럼 끝.