이 포스팅 분류는 Docker를 정확히 어떻게 사용할지를 다루지 않는다.
대신 Docker로 특정 상황에 어떻게 환경을 구축해야하는지의 예제를 담고 있다.
만약 이 Docker에 대해서 어떻게 관리하는 지를 알고싶다면 인터넷을 검색을 활용하거나
필자의 블로그에서 Software-Docker를 확인해주기를 바란다.
현재 여기 업로드 되어있는 모든 예제들은 필자의 github repository에 올라와있다.
그 주소는 아래와 같다.
https://github.com/kukaro/Eris-DockerExampleTemplate
예제를 직접 확인하고 싶다면 해당 repository를 참조하라.
도커를 이용하여 db를 구축하기 매우 편리해 졌다.
원래 한피씨에서 db를 여러개 구축하는건 불가능 한건 아니였지만 귀찮았으며
쉽게 지우고 사용하는것도 힘들었다. 그래서 도커를 사용해서 db를 구축하는건 어찌보면 축북이라고 생각한다.
그래서 간단하게 db를 사용하는 법에 대해서 알보도록 하자.
디렉터리 구조는 위와 같다. 참고로 test.txt는 필요없는 데이터다.
이제 어떻게 구동시키는지에 대해서 보자.
Dockerfile
FROM mysql:5.7
MAINTAINER kukaro <justkukaro@naver.com>
ADD ./mysql-init-files /docker-entrypoint-initdb.d
EXPOSE 3306
CMD ["mysqld"]
도커파일은 굉장히 간단하고 설명할 것도 없다.
다만 중요한건 ADD부분이다.
ADD ./mysql-init-files /docker-entrypoint-initdb.d
여기서 보면 디렉터리의 mysql-init-files아래의 파일들을 docker-entrypoint-initdb.d로 넘겨준다.
이는 docker의 db구조에서 약속된 형태로 여기에 넣은 sql이나 sh는 시작하자마자 구동한다.
그래서 넣어주는데 사실 이렇게 할 필요까지는 없다. 그 이유는 아래에 후술하겠다.
docker-compose.yml
version: '3.3'
services:
db:
image: mm
# volumes:
# - ./mysql-init-files/:/docker-entrypoint-initdb.d/
restart: always
container_name: mmc
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD="true"
ports:
- '3333:3306'
expose:
- '3333'
docker-compose에서 설정을 줄 수 있다.
하나씩 보자.
image: mm
mm이라는 이미지를 가져온다.
사실 이 이미지는 현재 존재하지 않는다. 우리는 우리가만든 Dockerfile의 이미지를 mm이라 정의할것이다.
그런데 여러분은 보면 알겠지만 굳이 mm이라는 새로운 이미지를 만들지 않아도된다.
image: mysql:5.7
이 경우 그냥 위처럼 쓰면 된다.
# volumes:
# - ./mysql-init-files/:/docker-entrypoint-initdb.d/
주석 처리 해놨지만 이부분은 중요하다.
여러분이 위의 Dockerfile에 했던 똑같은 작업을 여기서 할 수 있다.
둘중 어느 방식을 취하건 취향이라고 할 수 있지만 보통은 docker-compose에서 하게 된다.
docker build -t mm .
docker-compose up -d
이제 빌드하고 컴포즈를 실행해준다.
mysql -h127.0.0.1 --port 3333 -uroot
빌드가 끝나고 나서는 위와같이 접속한다.
제대로 동작하는걸 확인할 수 있다.