반응형
docker 와 docker-compose 를 이용하여 쉽게 mysql 을 구성 할 수 있다.
docker-compose.yml 파일
version: '3.1'
services:
###################################
#### DB Mysql
###################################
db:
#build: .
image: mysql:5.7.21
container_name: aereport-mysql
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --range_optimizer_max_mem_size=16777216
restart: always
environment:
MYSQL_DATABASE: test_db
MYSQL_USER: test
MYSQL_PASSWORD: test1!@
MYSQL_ROOT_PASSWORD: test1!@
TZ: Asia/Seoul
volumes:
#- {연결될 실제 물리 folder path}/{docker 안에 folder path}
- ./mysql/db:/var/lib/mysql
# OS 볼륨의 타임존을 따라가게 할때 사용한다.
#- /etc/timezone:/etc/timezone:ro # ubuntu os
- /etc/localtime:/etc/localtime:ro # cent os
- ./mysql/initdb.d:/docker-entrypoint-initdb.d
ports:
- 3306:3306
###################################
#### DB Web Manager
###################################
adminer:
image: adminer
container_name: mysql-adminer
restart: "no"
ports:
- 8081:8080
- image : mysql images 정보
- ./mysql/db:/var/lib/mysql
- mysql db가 생성되는 디렉토리 링크
- environment
- mysql 접속 정보 및 환경설정 정보
- TZ : Asia/Seoul
- mysql 시간 정보지정 아시아 서울
- ./mysql/initdb.d:/docker-entrypoint-initdb.d
- sql 파일을 넣어 넣고 initial data를 생성할때 사용한다.
- container 생성시 알파벳 순서대로 실행 된다.
- /etc/localtime:/etc/localtime:ro
- OS 볼륨의 타임존을 따라가게 할때 사용한다. → TZ 설정을 Asia/Seoul 로 지정해도 이상할때 가 있음.
- ./mysql/conf.d:/etc/mysql/conf.d
- mysql configuration 정보를 담아 둔다
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
- ./mysql/conf.d 에 my.cnf 파일을 생성하고 해당 정보를 입려한다.
- mysql configuration 정보를 담아 둔다
디렉토리 구조
.
├── README.md
├── docker-compose.yml
├── jenkins
│ ├── Dockerfile
│ └── jenkins_home
└── mysql
├── Dockerfile
├── conf.d
│ └── my.cnf
├── db
└── initdb.d
├── 1.create_table.sql
├── 2.test-init-data.sql
└── 3.load_data.sql
initdb.d 폴더 안에 컨테이너를 생성하며 같이 생성할 초기 데이터들을 알파벳 순번으로 생성해 준다.
load_data.sql 은 LODA DATA 명령어를 이용하여 불러올 데이터를 정의하는 용도로 사용한다.
create_table.sql
create table ad_group
(
ad_group_id varchar(128) not null comment '광고 그룹 아이디',
ad_group_name varchar(1024) not null comment '광고 그룹명',
start_time datetime null comment '시작일시',
end_time datetime null comment '종료일시',
ad_network_type varchar(32) null comment '지면 플랫폼 정보(유트브/검색/앱/페이스북/인스타/배너)',
status varchar(32) null comment '상태 (시작/중지/유효/삭제/일시정지/보관...)',
campaign_id varchar(128) not null comment '캠페인 아이디',
media_id varchar(12) not null comment '미디어 아이디 ( 구글, 페이스북....)',
custom_id varchar(32) null comment '광고계정',
master_id varchar(32) null comment '마스터 아이디',
objective varchar(32) null comment '목표(애드그룹 타입 : 동영상 / 배너 / 검색 )',
initial_collect_date date null comment '최초 수집일',
last_collect_date date null comment '최종 수집일',
primary key (ad_group_id, campaign_id, media_id)
)
comment '광고 그룹 정보' collate = utf8mb4_bin;
load_data.sql
LOAD DATA INFILE './departments.csv' INTO TABLE departments FIELDS TERMINATED BY ',' (`name`, `priority`);
docker-compose 실행 명령어
docker-compose up -d
반응형
'devops > docker' 카테고리의 다른 글
dockerfile에 springboot profile 적용하기 (1) | 2024.04.07 |
---|---|
도커 실행 권한문제 - dial unix /var/run/docker.sock: connect: permission denied (0) | 2023.04.17 |
docker-compose jenkins (0) | 2022.01.14 |
docker-compose 옵션 기본 명령어 (0) | 2021.04.29 |
Docker Redis (0) | 2020.01.10 |