가장 빨리 만나는 Docker 16장 - 1. 워드프레스 Dockerfile 작성하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

Docker로 워드프레스 블로그 구축하기

이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20

워드프레스 Dockerfile 작성하기

먼저 워드프레스 Docker 이미지를 생성합니다. wordpress 디렉터리를 생성하고 다음 내용을 Dockerfile로 저장합니다.

~$ mkdir wordpress
~$ cd wordpress
~/wordpress/Dockerfile
FROM ubuntu:14.04

RUN apt-get update
RUN apt-get install -y apache2 php5 php5-mysql mysql-client wget

WORKDIR /var/www
RUN wget http://ko.wordpress.org/wordpress-4.0-ko_KR.tar.gz -O - | tar -xz

WORKDIR /etc/apache2/sites-enabled
RUN sed -i "s/\/var\/www\/html/\/var\/www\/wordpress/g" 000-default.conf

WORKDIR /var/www/wordpress
RUN mv wp-config-sample.php wp-config.php
RUN sed -i "s/'database_name_here'/'wp'/g" wp-config.php && \
    sed -i "s/'username_here'/'root'/g" wp-config.php && \
    sed -i "s/'password_here'/getenv('DB_ENV_MYSQL_ROOT_PASSWORD')/g" wp-config.php && \
    sed -i "s/'localhost'/'db'/g" wp-config.php

ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT /entrypoint.sh

저는 우분투 14.04에 apt-get으로 필요한 패키지를 설치하도록 구성하였습니다.

  • FROM으로 ubuntu:14.04를 기반으로 이미지를 생성하도록 설정합니다.
  • apt-get update로 패키지 목록을 최신 상태로 업데이트한 뒤 apache2, php5, php5-mysql, mysql-client, wget을 설치합니다.
  • wget으로 /var/www 디렉터리에 워드프레스 소스 파일을 다운로드한 뒤 압축을 해제합니다.
  • sed/etc/apache2/sites-enabled 디렉터리의 000-default.conf 파일의 내용을 수정합니다. 웹 서버 기본 디렉터리를 /var/www/html에서 /var/www/wordpress로 바꿔서 워드프레스 소스를 사용할 수 있도록 합니다.
  • /var/www/wordpress 디렉터리의 wp-config-sample.php 파일을 wp-config.php 파일로 이름을 바꾼 뒤 sed로 DB 설정을 수정합니다.
    • DB_NAMEwp를 설정합니다.
    • DB_USERroot를 설정합니다.
    • DB_PASSWORD에 환경 변수의 DB_ENV_MYSQL_ROOT_PASSWORD를 사용하도록 설정합니다. docker run 명령의 --link 옵션으로 컨테이너를 연결했을 때 연결한 컨테이너의 환경 변수는 <별칭>_ENV_<환경 변수> 형식입니다. 우리는 컨테이너를 연결할 때 별칭을 db로 하고, 데이터베이스 컨테이너에서 환경 변수는 MYSQL_ROOT_PASSWORD를 사용할 것이기 때문에 DB_ENV_MYSQL_ROOT_PASSWORD가 됩니다.
    • 컨테이너를 연결할 때 별칭을 db로 할 것이므로 DB_HOSTdb를 설정합니다.
  • entrypoint.sh 파일을 추가한 뒤 실행할 수 있도록 권한을 설정합니다.
  • ENTRYPOINT에 /entrypoint.sh 파일을 설정하여 컨테이너가 시작되었을 때 스크립트 파일을 실행합니다.

다음 내용을 entrypoint.sh로 저장합니다.

~/wordpress/entrypoint.sh
#!/bin/sh

mysql -h db -uroot -p$DB_ENV_MYSQL_ROOT_PASSWORD -e "create database wp"
apachectl -DFOREGROUND
  • 워드프레스는 미리 MySQL 데이터베이스를 생성해주어야 합니다. 따라서 mysql 명령으로 db에 접속한 뒤 wp 데이터베이스를 생성합니다. 사용자 계정은 root이고 비밀번호는 환경 변수의 DB_ENV_MYSQL_ROOT_PASSWORD를 활용합니다.
  • Apache 웹 서버를 foreground로 실행합니다. 여기서 Apache를 foreground로 실행하지 않으면 docker run -d로 컨테이너를 생성해도 바로 정지되므로 주의합니다.

docker build 명령으로 이미지를 생성합니다.

~/wordpress$ sudo docker build --tag wordpress .

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2014-11-30