docker-compose로 워드프레스 구축

목차

docker-compose로 워드프레스를 구축하는 방법을 정리한다. docker-compose는 시스템 구축에 필요한 명령을 하나의 정의 파일에 기재해, 명령 한 번으로 시스템 전체를 실행하고 종료·폐기까지 처리하도록 도와주는 도구다. 이 글에서는 MySQL과 워드프레스 두 컨테이너를 docker-compose.yml 한 파일에 정의해 한 번에 띄우는 과정을 단계별로 살펴본다.

docker-compose란

docker-compose는 여러 컨테이너의 구성을 하나의 텍스트 파일로 관리한다. 도커 컴포즈 파일은 한 폴더에 단 하나만 있어야 하는데, 파일 이름을 docker-compose.yml로만 생성할 수 있기 때문이다.

docker-compose.yml 기본 구조

도커 컴포즈 파일의 기본 골격은 다음과 같다. 크게 services(컨테이너 정의), networks(네트워크), volumes(볼륨) 세 영역으로 나뉜다.

version: "3"
services:
  컨테이너_이름1:
    image: 이미지_이름
    networks:
      - 네트워크_이름
    ports:
      - 포트_설정
  컨테이너_이름2:
    image: 이미지_이름
    ...
networks:
  연동할_컨테이너들이_속할_네트워크의_이름
volumes:
  볼륨_이름1:
  볼륨_이름2:

컨테이너 정의 설계

MySQL 컨테이너(mysql000ex11) 정의

워드프레스의 데이터를 저장할 MySQL 컨테이너 설정 정보다.

항목항목 이름
MySQL 이미지 이름image:mysql:5.7
사용할 네트워크networks:wordpress000net1
사용할 볼륨volumesmysql000vol11
마운트 위치/var/lib/mysql
재시작 설정restart:always
MySQL 설정environment
Mysql 루트 비밀번호MYSQL_ROOT_PASSWORDmyrootpass
MYSQL 데이터베이스MYSQL_DATABASEwordpress000db
MYSQL 사용자MYSQL_USERwordpress000kun
Mysql 비밀번호MYSQL_PASSWORDwkunpass

워드프레스 컨테이너(wordpress000ex12) 정의

워드프레스 컨테이너는 depends_on으로 MySQL에 대한 의존 관계를 지정하고, 환경 변수로 DB 접속 정보를 전달한다.

항목항목 이름
의존관계depends_on:mysql000ex11
워드프레스 이미지 이름images:wordpress
사용할 네트워크networks:wordpress000net1
사용할 볼륨volumes:wordpress000vol12
마운트 위치/var/www/html
포트 번호 설정port:8085:80
재시작 설정restart:always
DB 관련 정보environment:
Mysql 컨테이너 이름WORDPRESS_DB_HOSTmysql000ex11
MYSQL 데이터베이스WORDPRESS_DB_NAMEwordpress000db
MYSQL 사용자WORDPRESS_DB_USERwordpress000kun
Mysql 비밀번호WORDPRESS_DB_PASSWORDwkunpass

docker-compose.yml 작성하기

1. 필수 주 항목(services, networks, volumes) 작성

버전에 이어 세 가지 주 항목의 뼈대를 먼저 잡는다.

version: "3"
services:
networks:
volumes:

2. MySQL 컨테이너 작성

각 항목 아래에 컨테이너·네트워크·볼륨 이름을 채운다. (파일을 작성할 때 들여쓰기에 유의할 것)

version: "3"
services:
  mysql000ex11:
  wordpress000ex12:
networks:
  wordpress000net1
volumes:
  mysql000vol11:
  wordpress000vol12:

3. 워드프레스 컨테이너 정의 작성

  ...(중략)...
  wordpress000ex12:
    depends_on:
      - mysql000ex11
    image: wordpress
    networks:
      - wordpress000net1
    volumes:
      - wordpress000vol12:/var/www/html
    ports:
      - 8085:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: mysql000ex11
      WORDPRESS_DB_NAME: wordpress000db
      WORDPRESS_DB_USER: wordpress000kun
      WORDPRESS_DB_PASSWORD: wkunpass

4. docker-compose.yml 최종 내용

version: "3"
services:
  mysql000ex11:
    image: mysql:5.7
    networks:
      - wordpress000net1
    volumes:
      - mysql000vol11:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: myrootpass
      MYSQL_DATABASE: wordpress000db
      MYSQL_USER: wordpress000kun
      MYSQL_PASSWORD: wkunpass
  wordpress000ex12:
    depends_on:
      - mysql000ex11
    image: wordpress
    networks:
      - wordpress000net1
    volumes:
      - wordpress000vol12:/var/www/html
    ports:
      - 8085:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: mysql000ex11
      WORDPRESS_DB_NAME: wordpress000db
      WORDPRESS_DB_USER: wordpress000kun
      WORDPRESS_DB_PASSWORD: wkunpass
networks:
  wordpress000net1:
volumes:
  mysql000vol11:
  wordpress000vol12:

파일이 있는 폴더에서 docker-compose up을 실행하면 두 컨테이너가 함께 생성되고, 브라우저에서 8085 포트로 접속하면 워드프레스 설치 화면이 나타난다.

docker-compose로 워드프레스 구축 완료 화면

정리

docker-compose를 이용하면 MySQL과 워드프레스처럼 여러 컨테이너로 이루어진 시스템도 정의 파일 하나로 일괄 실행·종료할 수 있다. 같은 방식으로 WEB-WAS를 묶는 예시는 docker-compose로 NginX – Tomcat 연동에서 이어서 살펴볼 수 있다.

참고 자료

https://life-coding.tistory.com/75

💬 댓글 0

💬 댓글을 남기려면?
첫 댓글을 남겨보세요 ✨

이 콘텐츠가 도움이 됐나요?

누스쿨 커뮤니티에서 더 많은 커리어 전략을 나눠요