Web + WordPress 서비스 구축 - 2

SummerToday·2024년 5월 4일

도커, 서버 기술

목록 보기
29/34
post-thumbnail

volume 상세 관리 및 설정

특정 호스트 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) 

docker-compose.yml 개선하기

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을 사용하여 이미지를 빌드한다.




해당 글은 다음 강의의 내용을 참고한 글임을 밝힙니다. 자세한 내용은 다음 강의에서 확인해볼 수 있습니다.
인프런, 잔재미 코딩, ⌜풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]⌟
profile
블로그 이관했습니다.

0개의 댓글