docker volume ls
#언제 만들어졌는지 어디있는지 확인할 수 있음
docker volume inspect todo-db
바인드마운트란?
실행되고 있는 컨테이너 꺼주고 도커파일 있는 데까지 감 (cd App)
IDE 터미널에서 자신이 실행한 터미널을 확인하기!(윈도우의 경우 파워쉘)
# log 값
docker logs {컨테이너ID}
# 실시간 log값 follow
docker logs -f {컨테이너ID}
# 설치가 완료된 후 여기서 벗어나려면 ctrl+c
# 3000번 포트에서 잘 돌아가는 거 확인
#app.js
"No items ----" 를
"아이템이 아직 없습니다!" 로 변경하면 바로 수정됨
docker network create todo-app
docker run -d \
> --network todo-app --network-alias mysql \
> -v todo-mysql-data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=secret \
> -e MYSQL_DATABASE=todos \
> mysql:5.7
# Mac OS M1 사용자
docker run -d \
--network todo-app --network-alias mysql --platform linux/amd64 \
-v todo-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=todos \
mysql:5.7
docker exec -it {컨테이너ID} mysql -p
SHOW DATABASES;
docker run -it --network todo-app nicolaka/netshoot
dig mysql
exit
docker run -dp 3000:3000 \
-w /app -v "S(pwd):/app" \
--network todo-app \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=secret \
-e MYSQL_DB=todos \
node:12-alpine \
sh -c "yarn install && yarn run dev"
docker ps
docker logs {컨테이너ID}
# 이 컨테이너ID는 mysql과 연결된 컨테이너
# 설정한 패스워드 입력
docker exec -it {컨테이너ID} mysql -p todos
#한글은 글씨가 깨져 ?로 보일 수 있음
select * from todo_items;
# etc폴더 > my.cnf 파일에 추가
[mysqld]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
skip-character-set-client-handshake
대망의 도커 컴포즈
docker compose version
# docker-compose.yml
version: "3.8"
services:
app:
image: node:12-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
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
# 써도되고 안써도 됨
name: todo-mysql-data
docker-compose up -d
docker-compose logs
docker-compose logs -f