
특정 호스트 pc와 연결하지 않고, 해당 볼륨을 컨테이너 삭제시에도 유지만 하고 싶은 경우, 다음과 같이 volumes 설정을 docker-compose.yml 파일 내에서 해줘야 한다.
이름1: 컨테이너_내부_경로1
이름2: 컨테이너_내부_경로2
volumes:
이름1:
이름2:
docker volume ls # 도커 볼륨 조회
doicker volume inspect 볼륨이름(VOLUME NAME) # 도커 볼륨 상세 정보 조회docker volume ls # 도커 볼륨 조회
docker volume inspect 볼륨이름 # 도커 볼륨 상세 정보 조회docker volume rm 볼륨이름사용하지 않는 볼륨 삭제 도커 명령
docker volume prune
사용하고 있는 볼륨들은 삭제가 안되기 때문에 모든 볼륨들을 삭제하기 위해서는 아래 명령어들을 사용해 사전에 모든 컨테이너와 이미지들을 삭제 후 위 명령어를 실행해야 삭제 된다.
#모든 컨테이너 삭제 docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) docker rmi -f $(docker images -q)
version: "3"
services:
nginxproxy:
depends_on: # 다른 컨테이너들이 모두 실행 된 후 요청을 포워딩 해줘야하기 때문
- nginx
- db
- wordpress
image: nginx:latest
container_name: proxy # 추가
ports:
- "80:80" # 해당 컨테이너만 외부에 포트를 열어둔다.
restart: always # 서버가 항상 돌아가도록 설정.
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf" # 호스트의 nginx.conf 파일 내용을 컨테이너의 nginx.conf 파일에 붙여넣고 연결시킴.
nginx:
image: nginx:latest
container_name: myweb # 추가
restart: always
volumes: # 추가
- "./myweb:/usr/share/nginx/html" # 호스트의 myweb 폴더 내용을 컨테이너의 html 폴더에 붙여넣고 연결시킴.
db: # 워드프로세스는 기본적으로 db가 필요함.
image: mysql:5.7
container_name: mysqldb # 추가
volumes:
- "mydb:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on: # db가 먼저 실행된 후 워드프레스가 동작해야 정상 동작.
- db
build: # 추가
context: ./wp
dockerfile: Dockerfile
container_name: wp # 추가
restart: always
volumes: # 추가
- "./html:/var/www/html"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes: # 추가
mydb:
container_name: ~
docker exec 같은 명령어 사용시 컨테이너 이름을 모두 입력하기 까다롭기 때문에 컨테이너 이름을 각각 지정해준다.
volumes: ~
컨테이너 삭제 시에도 데이터를 호스트 pc에 유지시키기 위해 volumes 옵션을 지정해준다.
cf.
volumes:
- "mydb:/var/lib/mysql"
여기서 mydb는 호스트 pc의 특정 폴더를 의미하는 것은 아니라 /var/lib/mysql의 내용을 저장하는 새 볼륨의 이름을 지정한 것이다.
위와 같이 볼륨을 설정할 시 docker-compose.yml 파일의 맨 끝 부분에 volumes 옵션을 위와 같이 추가하여 볼륨으로 지정한 볼륨의 이름들을 나열해주어야 한다.
build: ~
Dokcer 이미지를 빌드할 때 사용되는 옵션이다. 해당 옵션은 context와 dockerfile 두 가지 하위 옵션을 포함한다.
context
Docker 빌드 컨텍스트의 경로를 지정한다. 여기서 컨텍스트란 Docker가 이미지를 빌드할 때 사용하는 파일 및 디렉토리의 집합이다. 일반적으로 Dockerfile과 Docker 이미지를 빌드하는 데 필요한 다른 파일들이 포함된 디렉토리를 지정한다.
위의 예시에서는 ./wp 디렉토리가 빌드 컨텍스트로 사용된다.
dockerfile
Docker 빌드에 사용할 Dockerfile의 경로를 지정한다. Dockerfile은 Docker 이미지를 빌드할 때 필요한 텍스트 파일이다. 위의 예시에서는 ./wp 디렉토리 내에 있는 Dockerfile을 사용하여 이미지를 빌드한다.