docker network ls
docker network create wordpress_net
도커 네트워크를 생성하는 명령어 (네트워크의 이름을 지정)
생성성공
네트워크를 다시 조회 경우 wordpress_net로 잘 생성 되었음을 확인
docker network rm 네트워크명 or 네트워크아이디
docker \
run \
--name "db" \
-v "$(pwd)/db_data:/var/lib/mysql" \
-e "MYSQL_ROOT_PASSWORD=root_pass" \
-e "MYSQL_DATABASE=wordpress" \
-e "MYSQL_USER=docker_pro" \
-e "MYSQL_PASSWORD=docker_pro_pass" \
--network wordpress_net \
mysql:latest
컨테이너이름 : db
볼륨 마운트: -v "$(pwd)/db_data:/var/lib/mysql"
환경변수: -e "MYSQL_ROOT_PASSWORD=root_pass"...
사용할 네트워크: wordpress_net
이미지: mysql:latest
docker \
run \
--name app \
-v "$(pwd)/app_data:/var/www/html" \
-e "WORDPRESS_DB_HOST=db" \
-e "WORDPRESS_DB_NAME=wordpress" \
-e "WORDPRESS_DB_USER=docker_pro" \
-e "WORDPRESS_DB_PASSWORD=docker_pro_pass" \
-e "WORDPRESS_DEBUG=1" \
-p 8000:80 \
--network wordpress_net \
wordpress:latest
컨테이너이름 : app
볼륨 마운트: -v "$(pwd)/app_data:/var/www/html"
환경변수: -e -e "WORDPRESS_DB_HOST=db" ...
사용할 네트워크: wordpress_net
포트: 8000:80
이미지: wordpress:latest
복붙 할 경우 리눅스/유닉스 환경에서 사용!
컨테이너가 잘 실행 되고 있음을 확인
docker ps
docker ps -a
docker-compose.yml
version: "3.0"
services:
db:
image: mysql:latest
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass
MYSQL_DATABASE: wordpress
MYSQL_USER: docker_pro
MYSQL_PASSWORD: docker_pro_pass
app:
depends_on:
- db
image: wordpress:latest
volumes:
- ./app_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: docker_pro
WORDPRESS_DB_PASSWORD: docker_pro_pass
도커 yml 파일로 만들고 해당 파일이 있는 디렉토리로 이동 및 yml 파일 빌드
docker-compose -f docker-compose.yml up --build
빌드를 진핼 할 경우
Error response from daemon: error while creating mount source path '/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/34b290687a09a50b1f5116ca4eb09a897b1f676a4527ae5c54c1731c01e1fbb4': mkdir /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/34b290687a09a50b1f5116ca4eb09a897b1f676a4527ae5c54c1731c01e1fbb4: file exists
소스경로를 마운트 할때 데몬에서 에러를 반환한다는 에러가 계속 떳는데 도커를 재시작 하면 해결이 된다!!
netstat -ano
현재 사용하고 있는 port확인및 pid 확인 해보니 8000포트가 이미 사용되고 있었다.
전에 컴포즈를 실행할 경우 docker-compose.yml 파일에서 db의 volumes을 ./db_data:/var/lib/mysql으로 설정을 해 놓았다.
다만 다른 컴포즈를 실행하고 싶을 경우 새로운 폴더를 만들어 해당 docker-compose.yml 파일을 빌드를 했더니 file system for /var/lib/mysql/ is case insensitive 라는 에러가 발생!
docker-compose.yml
version: "3.0"
services:
db:
image: mysql:latest
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass
MYSQL_DATABASE: wordpress
MYSQL_USER: docker_pro
MYSQL_PASSWORD: docker_pro_pass
app:
depends_on:
- db
image: wordpress:latest
volumes:
- ./app_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: docker_pro
WORDPRESS_DB_PASSWORD: docker_pro_pass
이럴경우 db의 volumes이 충돌이 았음으로 db의 volumes을 수정하자
ex )
compose1
volumes:
- ./db_data:/var/lib/mysql
compose2
volumes:
- ./db_data:/var/lib/mysqltest
docker-compose -f docker-compose.yml up --build
다시 yaml 파일을 빌드를 해봤음
compose 와 compose20230411라는 컴포즈가 잘 실행이 되었고
localhost 8001 과 8000를 접속할 경우 잘 실행이 되었다.
같은 db의 여러개 컴포즈를 실행할 경우 db volumes 의 경로를 잘 설정해 주도록 주의 해야 한다!!