티스토리 뷰

메모/docker

docker compose 테스트 (wordpress)

4567은 소수 2022. 3. 10. 00:20

docker-compose : 컨테이너 별로 다른 환경 변수나 이미지 필요하거나 등 다른 설정을 해주어야 한다면 일일이 해당 컨테이너를 만들기는 힘들다. 그 때 필요한 것이 docker-compose 이다. docker-compose.yaml 파일을 통해 각 컨테이너 별로 설정을 해주고 한 번에 또는 각 컨테이너 별로 실행이 가능하다.

 

테스트 : wordpress 시작하는 컨테이너들을 만들자.

필요 : mysql (wordpress에 쓰일 mysql), wordpress 컨테이너 이미지

 

전체적인 구성 : 웹에서 연결된 wordpress 컨테이너로 들어오면 wordpress_net 네트워크로 연결된 mysql 컨테이너에서 데이터 불러오는 구조

 

포트 (로컬호스트) : 호스트 : 8080, wordpress : 80, mysql: 3306 (기본 포트)

 

1. docker-compose 없이 

 

- mysql 컨테이너와 wordpress 컨테이너가 연결될 수 있는 네트워크 구성

docker network create wordpress_net

- mysql 컨테이너를 wordpress_net 네트워크 안에서 동작하게 실행

docker run \
--name "db" \
-v "$(pwd)/db_data:/var/lib/mysql" \
-e "MYSQL_ROOT_PASSWORD=123456" \
-e "MYSQL_DATABASE=wordpress" \
-e "MYSQL_USER=user" \
-e "MYSQL_PASSWORD=123456" \
--network wordpress_net \
mysql:5.7

컨테이너 이미지 : mysql:5.7

컨테이너 이름 : db

볼륨 : $(pwd)/db_data 와 db 컨테이너의 /var/lib/mysql 연결

환경변수 : -e 옵션과 같이 설정

네트워크 : wordpress_net에 연결

 

- wordpress 컨테이너를 wordpress_net 네트워크 안에서 동작하게 실행

docker run \
--name app \
-v "$(pwd)/app_data:/var/www/html" \
-e "WORDPRESS_DB_HOST=db" \
-e "WORDPRESS_DB_USER=user" \
-e "WORDPRESS_DB_NAME=wordpress" \
-e "WORDPRESS_DB_PASSWORD=123456" \
-e "WORDPRESS_DEBUG=1" \
-p 8080:80 \
--network wordpress_net \
wordpress:latest

컨테이너 이미지 : wordpress:latest

컨테이너 이름 : app

볼륨 : $(pwd)/app_data 와 app 컨테이너의 /var/www/html 연결

환경변수 : -e 옵션과 같이 설정

네트워크 : wordpress_net에 연결

포트 : 호스트 8080 : wordpress 컨테이너 80

 

위 모두 실행 결과

잘 연결되었다.

 

docker-compose 테스트를 위해 실행 중인 컨테이너랑 네트워크, 볼륨으로 연결된 데이터 디렉토리 지우기

(네트워크 지울 시 기본 네트워크 있으니 *로 다 지우면 안 됨)

docker stop $(docker ps -aq)
docker rm -f $(docker ps -aq)
docker network rm wordpress_net
sudo rm -rf *

2. docker-compose 간단하게 만들어서 테스트

 

- docker-compose.yaml 작성 (전체 구성은 위와 동일)

version: "3.7"

services:
  db:
    image: mysql:5.7
    volumes:
      - ./db_data:/var/lib/mysql 
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: wordpress 
      MYSQL_USER: user
      MYSQL_PASSWORD: 123456
  app:
    depends_on:
      - db 
    image: wordpress:latest
    volumes:
      - ./app_data:/var/www/html
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_PASSWORD: 123456
      WORDPRESS_DEBUG: 1

docker-compose로 실행 시 해당 컨테이너를 연결하는 네트워크 기본적으로 생성

 

위와 같이 image, volumes, environments 등으로 필요한 이미지와 데이터가 연결될 볼륨 디렉토리 지정, 환경 변수 설정 등을 할 수 있고,

 

wordpress 컨테이너의 경우 mysql 컨테이너에서 데이터를 가져와야 하므로 depends on 으로 의존성 설정

 

컨테이너 이름은 services 아래에 처음으로 지어주면 됨

 

docker-compose up : 해당 컨테이너 전체 실행

docker-compose down : 해당 컨테이너 전체 종료

=> 각 컨테이너 이름 커맨드로 입력해서 컨테이너 별 실행 가능

 

마찬가지로 잘 연결되었다.

'메모 > docker' 카테고리의 다른 글

docker image 만들기, hub.docker.com에 push, pull  (0) 2022.03.06
docker - httpd image 테스트  (0) 2022.03.05
docker 설치 및 hello world (ubuntu 20.04)  (0) 2022.03.05
docker 공부  (0) 2022.03.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함