워드프레스 는 웹 사이트 생성 소프트웨어 로 아파치, PHP 런타임, 데이터베이스와 연동 하여 웹 사이트를 제공 할 수 있다.
워드프레스 는 웹 사이트 생성 소프트웨어로 쉽게 블로그 생성 도구 라고 생각하면 된다. 단, 우리가 보는 워드프레스 사이트를 제공하기 위해서는 워드프레스 뿐만 아니라 아파치, PHP 런타임, 그리고 데이터베이스가 연동 되어있어야한다.
다행히 워드프레스 공식 이미지 에는 워드프레스, 아파치, PHP 런타임이 포함 되어있으므로 데이터베이스(MySQL) 컨테이너만 추가로 설치 하면 된다.
워드프레스는 작성자가 생성한 내용을 데이터베이스에 저장하고, 사용자의 요청에 따라 저장된 웹 페이지를 보여준다. 이는 워드프레스와 MySQL 간 통신이 필요 하다는 말이다. 도커에서 컨테이너 간 통신 은 도커 네트워크 를 통해 이루어진다.
docker network create [네트워크이름]
으로 도커 네트워크 생성이 가능하다. 생성된 네트워크 목록은 docker network ls
으로 확인할 수 있다.
우리는 wordpress000net1 이름을 갖는 네트워크를 생성한다.
앞에서 말한 것처럼 MySQL은 워드프레스 이미지에 포함되지 않아서 따로 설치가 필요 하다. MySQL 컨테이너 생성 시에는 아홉 가지 옵션과 세 가지 인자를 지정한다. 수가 많으나 하나씩 살펴보면 그리 어렵지 않다.
docker run --name 컨테이너_이름 -dit --net=네트워크_이름 -e MYSQL_ROOT_PASSWORD=MYSQL_루트_패스워드 -e MYSQL_DATABASE=데이터베이스_이름 -e MYSQL_USER=MYSQL_사용자이름 -e MYSQL_PASSWORD=MYSQL_패스워드 mysql --character-set-server=문자_인코딩 --collation-server=정렬_순서 --default-authentication-plugin=인증_방식
--net 은 컨테이너를 연결할 도커 네트워크 입력, 나머지는 -e 옵션으로 환경변수 설정 을 위해 사용한다. 환경변수 란 운영체제에서 사용하는 다양한 설정값 이며 컨테이너의 설정값을 환경변수를 통해 전달 한다. 어떤 환경변수를 사용하는지는 컨테이너 종류에 따라 달라진다.
인자는 한국어 사용, 인증방식 변경을 위해 사용한다. 이들 값은 도커에서 사용되는 옵션이 아니라 MySQL 컨테이너에서만 사용되는 값 이다.
mysql 이미지로 이름이 mysql000ex11 인 컨테이너를 생성해보자.
docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
워드프레스 컨테이너에도 옵션이 열 가지 존재한다. 대부분은 데이터베이스 접속과 관련된 옵션 으로 환경변수 -e 로 작성된다.
docker run --name [컨테이너_이름] -dit --net=[네트워크_이름] -p 포트설정 -e WORDPRESS_DB_HOST=데이터베이스_컨테이너_이름 -e WORDPRESS_DB_NAME=데이터베이스_이름 -e WORDPRESS_DB_USER=데이터베이스_사용자_이름 -e WORDPRESS_DB_PASSWORD=데이터베이스_패스워드 wordpress
wordpress 이미지로 이름이 wordpress000ex12 인 컨테이너를 생성해보자.
docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 8080:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress
docker ps -a
명령어로 상태 확인 시 아래와 같으면 잘 실행된 것이다.
웹 브라우저에서 http://localhost:8080 에 접근해서 워드프레스 초기 화면이 출력되는지 확인해보자. 다음의 설치 화면이 나오면 워드프레스가 정상적으로 동작 중인 것이다.
실습을 모두 마친 후, docker stop, rm
, docker network rm
, docker image rm
으로 컨테이너, 네트워크, 이미지를 제거하자.
Tip. LAMP 스택
일반적으로 웹 시스템 은 리눅스 + 웹 서버 + 데이터베이스 + 프로그래밍 언어 런타임 조합을 사용한다. 특히 리눅스 + 아파치 + MySQL + PHP런타임 조합인 LAMP 스택 을 일반적으로 많이 사용한다.