part 8) use docker compose
이제 드디어 도커 컴포즈다
이녀석은 한번에 많은 컨테이너들을 실행할수 있게끔 만들어주는 애라 꼭 필요하다
일단 도커 실행중인 애들을 다 없에주자
docker ps -a
이제 docker compose 를 써보자
docker compose 버전체크 이걸로 잘 실행되는지 알 수 있다
docker compose version
버전 안뜨고 에러뜨면 인터넷에 서 찾기 고고
docker run -dp 3000:3000 \
-w /app -v "$(pwd):/app" \
--network todo-app \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=secret \
-e MYSQL_DB=todos \
node:18-alpine \
sh -c "yarn install && yarn run dev"
이녀석을 분해할 거다
우린 이걸로 실행했으니 이거 토데로 만들어 주면된다
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
자 확인을 해보자
일단 이름을 정햇다
app이라는 이름을 정햇고
image는 사용할 이미지(운영체제 혹은 앱)을 선택해준다
MYSQL 쪽은 전에 레퍼런스 본곳의 env(환경변수)를 추가해 주는것이다
이제 저번에도 yarn 파일을 공유하여 실행해주었기에 현재위치를 공유해주는
volumes: 설정을 해준다
<로컬위치>:<컨테이너위치> : 예제는 ./ 로 현재위치를 넣어주었고 /app으로 그공유 폴더를 만들어 주엇다
working_dir : 은 처음 앱이 실행하고 갈곳 (cd <위치>) 해주는 느낌?
해석은 끝낫다
mysql 로가보자
services:
[... app 설정 생략 ...]
mysql:
image: mysql:8.0
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
들여쓰기를 주의하여 추가해준다
mysql이라는 이름으로
image 는 mysql 8.0 버전을 쓰고
valumes 도 위에 말한거 처럼 설정해준다
근데 좀 특이하다 todo-mysql-data 이라는 env(환경변수)로 설정해놔서 이걸 --network-alias 에서 알아서 해주는거 같다
그리고
todo-mysql-data 라는 volumes을 만들어주면서 중간에 이음역활을 해주는거까지 만들어준다
이렇게 2개의 컨테이너와 1개의 네트워크를 만들어 이어주면 끝이다~
이제
docker compose up -d
으로 실행을 해보자
아마 잘되는것을 볼 수 있을 거다
https://docs.docker.com/get-started/08_using_compose/
Use Docker Compose
docs.docker.com
'42Seoul > Docker' 카테고리의 다른 글
[42 Seoul] 1. Inception Debian 으로 docker 설치하기 (1) | 2023.03.05 |
---|---|
11. docker 가이드 파해치기 [Get started] part 9 (0) | 2023.03.04 |
9. docker 가이드 파해치기 [Get started] part 7 (0) | 2023.03.04 |
8. docker 가이드 파해치기 [Get started] part 6 (0) | 2023.03.04 |
7. docker 가이드 파해치기 [Get started] part 5 (0) | 2023.03.04 |