로컬 환경
- Window 11 Home
- Docker, docker-compose
- DBeaver
- MySQL 8.0
Docker Desktop 설치
링크 클릭하고 들어가면 다운로드 버튼이 있다. 본인 OS에 맞는 프로그램을 다운로드 받으면 된다. 나는 Winodws를 선택해서 설치했다.
docker-compose 구성
docker-compose.yml 작성
version: '3'
services:
mysql:
image: mysql:8.0
container_name: mysql_test
ports:
- "3306:3306"
env_file: .env
environment:
TZ: Asia/Seoul
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --lower_case_table_names = 1
volumes:
- ./initdb.d:/docker-entrypoint-initdb.d
- ./mysql_data/mysql/:/var/lib/mysql
# 파일 규격 버전
# 컨테이너 정의
# 서비스 명
# 사용할 이미지
# 컨테이너 이름 설정
# 접근 포트 설정
# (컨테이너 외부 : 컨테이너 내부) ← 컨테이너 내부는 무조건 3306
# 환경변수 옵션 파일 : 파일의 경로
# -e 옵션
# 타임존
# 명령어 실행
# 한글 깨짐 방지
# 이모지 깨짐 방지
# 쿼리문 대소문자 구분 X
# -v 옵션 ( 데이터 볼륨 매핑 )
# initdb.d 볼륨을 /docker-entrypoint-initdb.d에 연결
# mysql-data/mysql 볼륨을 /var/lib/mysql에 연결
.evn 작성
MYSQL_ROOT_PASSWORD=root1234
MYSQL_DATABASE=moment
MYSQL_USER=moment
MYSQL_PASSWORD=moment
mysql 계정을 생성합니다.
initdb.d 폴더 추가
create_table.sql 작성
CREATE TABLE `MEMBER` (
`ID` VARCHAR(100) NOT NULL,
`PWD` VARCHAR(100) NULL,
`NAME` VARCHAR(50) NULL,
`PH` VARCHAR(20) NULL,
`ZIPCODE` VARCHAR(10) NULL,
`EMAIL` VARCHAR(100) NULL,
`ADDR` VARCHAR(200) NULL,
`ADDR_DETAIL` VARCHAR(200) NULL,
`SUB_DT` DATETIME NULL,
`UPDATE_DT` DATETIME NULL,
`ROUTE` INT NULL COMMENT '자사, KAKAO, NAVER',
`YN` INT NULL,
`SNS_TOKEN` VARCHAR(500) NULL
);
...
CREATE TABLE `REPLY` (
`REPLY_NO` INT NOT NULL,
`BOARD_NO` INT NOT NULL,
`ID` VARCHAR(100) NOT NULL,
`CONTENT` VARCHAR(300) NULL,
`WRITE_DT` DATETIME NULL,
`UPDATE_DT` DATETIME NULL,
`YN` INT NULL COMMENT 'YES or NO',
`RE_REPLY_CONTENT` VARCHAR(300) NULL,
`RE_REPLY_WRITE_DT` DATETIME NULL,
`RE_REPLY_UPDATE_DT` DATETIME NULL,
`RE_REPLY_YN` INT NULL COMMENT 'YES or NO'
);
MySQL에서 사용할 Table을 정의합니다. 테이블 생성 구문은 ERDCloud를 활용하였습니다.
docker 생성 및 실행
docker-compose up -d
파일이 있는 경로로 가서 해당 명령어를 실행하면 설정한 환경으로 MySQL 컨테이너가 생성 및 실행된다.
난 Visual studio code를 활용하여 실행했다. Ctrl + ` 단축키를 눌러 터미널을 띄운 다움 해당 명령어를 실행했다.
- 터미널 성공 이력 확인
- Docker Desktop Containers 확인
컨테이너가 올라간걸 확인했으니 이제 DB Tool을 이용하여 MySQL로 생성한 계정을 접근해보자.
DBeaver 설치
DBeaver Connect MySQL
에러가 발생하는 원인은 useSSL=false로 설정하고 allowPublicKeyRetrieval 설정을 하지 않은 경우라고 한다. 이 부분은 드라이버에서 설정해주면 된다.
docker-compose 설정 시 명령어
docker-compose 설정 시 사용했던 명령어들이다.
# volume, image 전체 삭제 명령어
docker-compose down -v --rmi all
# 재생성 및 재실행
docker-compose up --build -d
내 의도와는 다르게 되었을 때 컨테이너 재설정이 필요했었을 때 였다. 그래서 볼륨과 이미지를 삭제할 수 있는 명령어와 파일에 있는 볼륨을 삭제해준 후 재생성 및 재실행 명령어를 입력했다.
# 실행중인 컨테이너 확인하는 명령어
docker ps
# 컨테이너 전체 조회 -> STATUS가 Exited면 컨테이너 중지된거임
docker ps -a
# 컨테이너 재실행
docker restart 컨테이너명
# 실행중인 컨테이너 확인 -> 재실행하면 STATUS이 Up으로 바뀜
docker ps
위의 명령어를 실행하면서 docker 기본 명령어의 일부분을 배운 것 같다.
마치며
docker desktop에서 Containe를 Exited해도 자체적으로 잡아먹는 메모리가 많기 때문에 docker desktop을 사용하지 않을 경우에는 무조건 프로그램을 꺼두는 것이 좋다.