Docker를 설치하면 docker-compose 라는게 같이 설치가 되는데 (Mac기준)
처음에 몇가지 세팅만 해두면 더 편하게 Docker를 사용할 수 있다.
현재 일할때 mysql 2대, redis 1대를 사용하는데 로컬에 세팅한 예제로 세팅을 해보겠다.
1. Dockerfile
docker를 사용할때 Dockerfile이란 이름으로 docker 세팅을 하는데 docker-compose도 이 파일에 작성된 내용으로 설정을 불러 올 수 있다.
2. docker-compose.yml
docker-compose를 실행할때 필요한 설정 파일이다. 이 파일이 있는곳에서 실행해야 docker-compose를 사용할 수 있다.
3. mysql 예제
3-1. 디렉토리 구조 이해
mysql의 경우 DML 및 DDL이 필요할 수 있다.
최초 mysql 컨테이너 실행시 테이블 생성 및 환경변수 insert가 필요할 수 있다.
예제 기준으로 config와 sql파일을 별도 디렉토리로 분리해서 설정해 놓았다.
sql디렉토리안에 실행시킬 sql파일을 넣으면 된다.
3-2. Dockerfile 작성
fileName: Dockerfile-example
# Dockerfile-example
# Dockerfile은 확장자가 없다.
# 가져올 mysql 버전 작성
FROM mysql:5.7
# 유지하는 사람 정보.. 특별히 쓸대는 없다.
MAINTAINER heron.lee
# mysql 세팅 및 최초 실행시 실행할 스크립트 파일 경로 세팅
# sql 실행은 알파벳 순서로 실행 됩니다. 스크립트 실행 순서를 조절 할 수 있습니다.
COPY config/mysql/my.cnf /etc/mysql/
COPY sql/*.sql /docker-entrypoint-initdb.d/
COPY부분만 설명하면 왼쪽이 내 local경로 우측이 docker경로이다.
sql파일의 경우 docker-entrypoint-initdb.d/ 아래에 위치하면 이미지가 생성하고 mysql을 실행시킬때
sql구문을 실행한다. (단, 제 경험으로는 최초 이미지 생성시에만 실행되었음)
3-3. docker-compose.yml 작성
fileName: docker-compose.yml
version: '3.3'
services:
# service 명
mysql-example:
# Dockerfile를 읽어올 경로 작성
build:
context: .
dockerfile: Dockerfile-example
container_name: mysql-container
# 이미지명 서버에 push or link를 할때 이 이미지명을 사용한다.
image: custom-mysql-container:1.0
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_DATABASE: 'example-db'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
ports:
- '10126:3306'
volumes:
- ./volumes/mysql-example:/var/lib/mysql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
redis:
container_name: redis
image: redis:4.0.11-alpine
ports:
- '6379:6379'
version은 docker-compose 버전 작성 (내가 관리할 버전이 아님!!)
mysql의 경우 로그인 정보를 설정하기 싫으면 environment 값을 보면 됨.
ports는 내 local포트와 docker container에 매핑시킬 포트를 작성하면 된다. (왼쪽이 local, 우측이 docker port)
volumes는 컴퓨터를 껏다 킬 경우 docker도 꺼지기 때문에 데이터를 저장 시킬 공간.
아래보면 redis라는게 있는데 docker-compose.yml에는 여러개의 이미지를 한번에 실행 시킬 수 있다는걸 보여주기 위해서 간단히 넣었다.
3-4. docker-compose 실행
docker-compose up -d
docker-compose.yml 경로에서 위와 같이 명령어를 실행하면 docker가 실행하면서 mysql 및 redis 가 실행 된다.
마무리.
위 설정은 local환경에서 실행될 환경이기 때문에, 실제 운영환경에서는 더 많은 설정값이 필요할 수 있다.
docker-compose 관련해서 검색을 하면 더 많은 정보를 찾아 볼 수 있을 것이다.
'Container' 카테고리의 다른 글
Docker 기초 명령어 (0) | 2019.12.14 |
---|---|
Mac - Docker 설치 (0) | 2019.12.14 |