드디어 도커 컨테이너를 활용해서 테스트코드를 작성해보자.
로컬에서 db를 비우고, 테스트하고, 다시 비우면 너무 일이 많으므로, test시도시에 컨테이너를 띄우고, 모든 테스트를 완료한 후에 컨테이너를 내리는 식으로 테스트를 진행할 것이다.
일단 docker-compose.yml을 작성해서 mySQL 컨테이너를 하나 띄워주자
version: '3'
services:
mySQLContainer:
image: mysql
container_name: mySQLContainer
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8
- --collation-server=utf8_general_ci
ports:
- 3307:3306
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: friending_test_db
MYSQL_USER: donggil
MYSQL_PASSWORD: '${DB_PASSWORD}'
version
도커 컴포즈의 버전정보이다.
버전마다 약간씩 추가 기능이라던지 그런게 다르다고 한다.
services
컨테이너 각 하나를 뜻한다.
서비스 이름과 도커 컨테이너 이름은 무관하다.
mySQLContainer
서비스의 이름이다. 도커 컨테이너 이름과는 관련은 있으나 이거 그대로 들어가진 않는다.
container_name으로 별도로 설정할 수 있다.
설정하지 않으면 services이름_db이름_1 이런식으로 컨테이너가 생성되니 주의하자!
image
mysql을 쓰겠다는뜻
command
컨테이너의 세부 설정을 조작한다.
--default-authentication-plugin=mysql_native_password
이전 버전의 암호화방식을 사용하겠다는 뜻이다.
--character-set-server=utf8
--collation-server=utf8_general_ci
안해주면 한글이 깨져서 이렇게 설정해주었다.
ports: - 3307:3306
호스트포트(외부포트):내부포트이다.
mysql은 3306이므로 오른쪽은 고정해주자.
(둘다 3307로 했다가 고생좀했다.)
environment
mysql 의 db, user설정이다.
.env내부 파일을 읽어올 수 있다!
쉘스크립트 문법을 따르는 것으로 보인다.
다 작성했다면
docker-compose -f ./docker-compose.yml up -d
로 도커 컨테이너를 띄워주자.
docker ps
요걸로 잘띄워졌는지 확인해보자.
일을 마쳤다면
docker-compose down
를 통해 컨테이너를 삭제해주자.