1. 실습 내용 소개

2. 실습 준비

  1. 실습 디렉토리 생성

    mkdir ~/docker-practice-wordpress
    
  2. 실습 디렉토리로 이동

    cd ~/docker-practice-wordpress
    
  3. nginx에서 Wordpress를 인지할 수 있도록 설정파일을 작성한다.

    cat <<EOF > ~/docker-practice-wordpress/default.conf
    server {
      listen        80;
      server_name   localhost;
      location / {
        proxy_pass <http://wordpress/>;
      }
    }
    EOF
    
  4. 데이터베이스에 기록된 데이터 보존을 위해 volume으로 지정할 디렉토리 생성

    mkdir ~/docker-practice-wordpress/db_data
    

3. docker-compose 실습

  1. docker-compose.yml 파일 작성

    cat <<EOF > ~/docker-practice-wordpress/docker-compose.yml
    version: '3.3'
    
    services:
       db:
         image: mysql:5.7
         volumes:
           - ./db_data:/var/lib/mysql
         restart: always
         environment:
           MYSQL_ROOT_PASSWORD: somewordpress
           MYSQL_DATABASE: wordpress
           MYSQL_USER: wordpress
           MYSQL_PASSWORD: wordpress
    
       wordpress:
         depends_on:
           - db
         image: wordpress:latest
         ports:
           - "8000:80"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress
       web:
         depends_on:
           - wordpress
         image: nginx
         ports:
           - "80:80"
         volumes:
           - ./default.conf:/etc/nginx/conf.d/default.conf
    EOF
    
  2. docker-compose를 사용하여 컨테이너 생성

    docker-compose -f ~/docker-practice-wordpress/docker-compose.yml up -d
    
  3. 컨테이너 확인

    docker ps
    
    CONTAINER ID        IMAGE                    COMMAND                  CREATED              STATUS              PORTS                    NAMES
    1b8ff541a5b2        nginx                    "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp       ubuntu_web_1
    0ef1aadf615f        wordpress:latest         "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8000->80/tcp     ubuntu_wordpress_1
    f9e923a64616        mysql:5.7                "docker-entrypoint.s…"   2 minutes ago        Up About a minute   3306/tcp, 33060/tcp      ubuntu_db_1
    
  4. 접속 확인을 위해 공인 IP 주소 확인

    curl wgetip.com
    
  5. 접속 확인

    http://[서버IP]
    
  6. 컨테이너 종료

    docker-compose stop
    
    Stopping demo2_web_1       ... done
    Stopping demo2_wordpress_1 ... done
    Stopping demo2_db_1        ... done