docker-compose로 WordPress 환경 구축

전제



docker 명령, docker-compose, docker-sync의 기본은 이해하는 것으로
docker-compose로 단일 컨테이너 내에 virtualhost로 여러 워드 프레스를 설치하는 환경
바삭바삭하게 준비할 수 있도록 한다.

환경:


· Macbook air El Capitan 10.11.6
· docker for mac
· docker-sync

docker의 개인 이미지 (수시로 바꿀 것입니다)





사용할 docker image



궁극적으로 aws에 배포를 생각하고 있기 때문에 docker hub에도 추가 된 amazonlinux 공식 이미지를 사용합니다.
데이터베이스는 임시 RDS라는 것으로 mysql의 공식 이미지를 사용한다.

amazonlinux 공식
htps : // 후 b. 도 c r. 코 m/_/아마쵸즈나 x/
mysql 공식
htps : // 후 b. 도 c r. 이 m/_/mysql/

디렉토리 구성





amznlinux의 Dockerfile



APP 서버 구축용의 Dockerfile입니다.

Dockerfile
FROM amazonlinux:latest

RUN yum clean all && yum -y update
RUN yum clean all

### Apache
RUN yum install -y httpd
RUN chkconfig httpd on

### MySQL Server
RUN yum install -y mysql mysql-server mysql-client

### PHP
RUN yum install -y php php-mysql php-pear php-cli php-mbstring php-mcrypt php-pdo php-xml

RUN pear install Crypt_Blowfish
RUN pear install -a Mail

# Edit php setting file
COPY php/php.ini /etc/php.ini

EXPOSE 80

CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]

해설은 할애하므로 RUN이라든지 CMD라든지 EXPOSE라는 따위 분은 하기 URL에서 확인해 주세요.
htp // // cs. 도 c r. jp/엔기네/레후에렌세/부이 l로 r. HTML
선인에게 감사!

mysql의 Dockerfile



공식 이미지를 거의 그대로 사용하고 있기 때문에 특히 바뀌지 않았습니다.
정말로 공식 부르는 것만

Dockerfile
FROM mysql:5.6.34


각종 설정 파일



마운트하거나 복사하는 php.ini, my.cnf, httpd.conf에 대해 필요한 경우 덮어 씁니다.
github에는 더미가 있습니다. (움직이지만 적당하므로 잘 읽으십시오)

docker-compose.yml



이쪽은 docker-compose 커멘드를 사용했을 때 읽히는 파일입니다만 Dockerfile이 각 컨테이너 마다 꽉 써 가는 느낌으로 docker-compose는 Dockerfile내에서 EXPOSE등의 설정을 정리해 실시할 수 있거나, 컨테이너끼리의 종속성을 지정합니다.

docker-compose.yml
version: '2'

services:
  amznlinux:
    depends_on:
      - mysql
    build: amznlinux
    links:
      - mysql
    extra_hosts:
      - "localpage1.jp:127.0.0.1"
      - "localpage2:127.0.0.1"
    ports:
      - "80:80"
    volumes:
      - ./amznlinux/httpd:/etc/httpd/conf/

  mysql:
    build: mysql
    ports:
      - "3306:3306"
    restart: always
    volumes:
      - ./mysql/data_volume:/var/lib/mysql:rw
      - ./sharedata_mysql:/share_data:rw
      # - ./mysql/my:/etc/mysql/conf.d
    environment:
      MYSQL_DATABASE: databasename
      MYSQL_ROOT_PASSWORD: password

예를 들어 설명은 생략하기 때문에 모르는 것은 참조를 확인해 주세요
htp // // cs. 도 c r. jp/코m포세/코m포세후우. HTML

그러고 보니 yml은 만지지 않았지만 반각 공간 2 개로 각 요소를 판별하고 있습니다.
sublime으로 개행하면 자동으로 tab 넣어 주었으므로 처음 build시 등에 에러를 상당히 토해 주었습니다.

docker-compose-dev.yml



이 파일은 docker-sync를 수행할 때 로드되어 docker-compose.yml 설정을 덮어씁니다.

docker-compose-dev.yml
version: '2'

volumes:
  www:
    external: true

services:
  amznlinux:
    volumes:
      - www:/var/www

여기와 아래의 docker-sync.yml에 관해서는 이쪽을 참고로 했습니다.
ぇぇぇぺぺrs. 는 bぉ. jp/엔트리/2016/11/02/122633

docker-sync.yml



docker-sync는 docker for mac을 사용하여 환경을 구축하는 경우 브라우저 액세스가 매우
느려지는 증상이 있기 때문에 그것을 피하기 위해 사용합니다.
자세한 것은 전항의 URL보다 확인해 주세요

docker-sync.yml

options:
  # default: docker-compose.yml if you like, you can set a custom location (path) of your compose file like ~/app/compose.yml
  compose-file-path: 'docker-compose.yml'

  # optional, default: docker-compose-dev.yml if you like, you can set a custom location (path) of your compose file. Do not set it, if you do not want to use it at all

  # if its there, it gets used, if you name it explicitly, it HAS to exist
  compose-dev-file-path: 'docker-compose-dev.yml'

syncs:
  www:
    src: './amznlinux/www'
    dest: '/var/www'
    sync_strategy: 'rsync'
    sync_host_port: 10871
    sync_excludes: ['.DS_Store',]


docker sync에 관해서는 docker와 별도로 설치가 필요하므로 주의해 주세요.

위의 소스에 관해서는 git hub에 Wordpress를 저장하고있는 www 디렉토리를 비우고 그 중 올리기 때문에
관심이 있다면 놀아보세요.

끝까지 낭문에 사귀신 분들은 감사합니다.
그건 그렇고,이 기사는 이전 기사의 굽기입니다.

좋은 웹페이지 즐겨찾기