[Docker] Docker Compose를 이용해 Wordpress 배포하기DevOps/Docker2022. 5. 15. 21:45
Table of Contents
728x90
✔️ Docker Compose이용해 Wordpress를 배포하기
docker-compose.yaml
version: "3" # 버전 지정
services: # DB, Wordpress 서비스 구성
wp-db:
image: mysql:5.7 # 사용할 이미지 지정
restart: always # 재시작 정책 지정
environment: # DB 환경 변수 설정(필수) - 자동으로 권한 설정된다.
MYSQL_ROOT_PASSWORD: P@ssw0rd
MYSQL_DATABASE: wordpress
MYSQL_USER: wpadm
MYSQL_PASSWORD: P@ssw0rd
volumes: # 볼륨 지정 (wp-db-vol이라는 볼륨을 만들어줘야한다.)
- wp-db-vol:/var/lib/mysql
networks: # 컨테이너를 생성할 네트워크
- wp-net # 별도로 옵션을 지정하지 않을 시 bridge type 생성
wp-web:
depends_on: # wp-web, wp-db의 생성 순서는 랜덤하므로
- wp-db # wp-db가 먼저 생성되도록 명시적 의존성을 지정한다.
image: wordpress:5-apache # 사용할 이미지 지정
restart: always # 재시작 정책 지정
environment: # 환경 변수 설정
WORDPRESS_DB_HOST: wp-db # Docker Compose의 장점: 이름으로 가리킴
WORDPRESS_DB_USER: wpadm
WORDPRESS_DB_PASSWORD: P@ssw0rd
WORDPRESS_DB_NAME: wordpress
ports: # 외부에 노출시키기 위해 포트 포워딩 지정
- "80:80" # 호스트의 포트 : 컨테이너의 포트(이미지에 이미 지정됨)
volumes:
- wp-web-vol:/var/www/html
networks:
- wp-net
volumes:
wp-db-vol:
wp-web-vol:
networks:
wp-net:
vagrant@docker ~ cd compose
vagrant@docker ~/compose ls
example1 example2 example3 example4
vagrant@docker ~/compose mkdir wp
vagrant@docker ~/compose cd wp
vagrant@docker ~/compose/wp vi docker-compose.yaml
vagrant@docker ~/compose/wp docker compose up -d
[+] Running 5/5
⠿ Network wp_wp-net Created 0.0s
⠿ Volume "wp_wp-db-vol" Created 0.0s
⠿ Volume "wp_wp-web-vol" Created 0.0s
⠿ Container wp-wp-db-1 Started 0.5s
⠿ Container wp-wp-web-1 Started 0.9s
docker compose run을 실행하면
yaml 파일에서 명시적 의존성을 지정했기 때문에 db가 항상 먼저 만들어지는 것을 확인할 수 있다.
vagrant@docker ~/compose/wp docker compose ps
NAME COMMAND SERVICE STATUS PORTS
wp-wp-db-1 "docker-entrypoint.s…" wp-db running 33060/tcp
wp-wp-web-1 "docker-entrypoint.s…" wp-web running 0.0.0.0:80->80/tcp, :::80->80/tcp
vagrant@docker ~/compose/wp docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
93d03e473024 wordpress:5-apache "docker-entrypoint.s…" 44 seconds ago Up 43 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp wp-wp-web-1
6da8f8423342 mysql:5.7 "docker-entrypoint.s…" 44 seconds ago Up 44 seconds 3306/tcp, 33060/tcp wp-wp-db-1
docker ps
또는 docker compose ps
로 생성된 컨테이너를 확인 가능하다.
✔️ docker compose down 시 주의점
vagrant@docker ~/compose/wp docker compose down
[+] Running 3/3
⠿ Container wp-wp-web-1 Removed 1.2s
⠿ Container wp-wp-db-1 Removed 1.6s
⠿ Network wp_wp-net Removed 0.2s
vagrant@docker ~/compose/wp docker network ls
NETWORK ID NAME DRIVER SCOPE
5ce93a18aa8e bridge bridge local
f82faa7d09e2 example2_web-net bridge local
4159dc8b15f3 host host local
42eb99a7c805 none null local
dd8cb6c53e9b wordpress-network bridge local
vagrant@docker ~/compose/wp docker volume ls
DRIVER VOLUME NAME
local wp_wp-db-vol
local wp_wp-web-vol
docker compose down 해도 볼륨은 자동으로 삭제되지 않는다.
만약 필요 옵션을 빠뜨려 옵션을 추가한 뒤 다시 docker compose를 하면
볼륨이 자동으로 삭제되기 않기 때문에 해당 볼륨을 그대로 사용하게 되고, 오류가 발생할 가능성이 있다.
DB에서 세팅했던 환경 변수를 바꾸더라도 볼륨에 저장되어 있던 기존의 정보를 유지하기 때문이다.
vagrant@docker ~/compose/wp docker compose down -v
[+] Running 2/2
⠿ Volume wp_wp-web-vol Removed 0.0s
⠿ Volume wp_wp-db-vol Removed 0.1s
volume을 수동으로 삭제하던지 docker compose down -v 명령으로 볼륨까지 삭제한다.
k8s를 사용하면 Docker Compose를 거의 사용할 필요가 없으며
개발자들이 로컬에서 App을 개발해서 이미지를 생성할 때나 간단하게 컨테이너를 테스트하는 용도로 종종 사용한다.
728x90
'DevOps > Docker' 카테고리의 다른 글
자주 사용하는 도커 명령어 (0) | 2023.02.14 |
---|---|
[AWS] ECR의 Docker 컨테이너를 사용하여 AWS ECS 작업 배포하기 (0) | 2022.05.15 |
[Docker] Docker를 이용하여 wordpress 배포하기 (0) | 2022.05.15 |
[Docker] Docker Compose 사용법 (0) | 2022.05.13 |
[Docker] Docker Hub 사용법 (0) | 2022.05.12 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!