Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

일기장

도커 nginx + php-fpm + mariadb 본문

카테고리 없음

도커 nginx + php-fpm + mariadb

Hemulen 2020. 3. 7. 06:10

도커로 php cms인 그누보드 서버를 만들어보자

 

글에서 사용한 도커 버전

$ docker -v
Docker version 19.03.7, build 7141c199a2

 

선택] 사용할 도커 이미지들을 미리 pull 해준다

$ docker pull nginx
$ docker pull mariadb
$ docker pull php:7.4.3-fpm

 

 

 

 

그누보드는 gd, mysql, iconv php플러그인이 따로 필요해서 Dockerfile과 docker-php-extension-installer로 설치

*iconv는 php 기본 이미지에 설치되어 있다

 

./Dockerfile

FROM php:7.4.3-fpm

ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/

RUN chmod uga+x /usr/local/bin/install-php-extensions && sync && \
    install-php-extensions gd mysqli

원하는 이름으로 image를 build

$ docker build -t "php:7.4-fpm-gd-mysqli" .

 

docker-compose.yml 작성

version: "3.7"

services:
    mariadb:
        image: mariadb:latest
        restart: unless-stopped
        environment:
            - MYSQL_ROOT_PASSWORD=[mariadb 루트로 설정할 비밀번호]
        ports:
            - "3306:3306"
        volumes:
            - ./var_lib_mysql/:/var/lib/mysql
    php:
        image: php:7.4-fpm-gd-mysqli
        restart: unless-stopped
        depends_on:
            - mariadb
        volumes:
            - ./var_www_html/:/var/www/html
    nginx:
        image: nginx:latest
        restart: unless-stopped
        depends_on:
            - php
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - ./nginx/nginx.conf:/etc/nginx/nginx.conf
            - ./var_www_html/:/var/www/html

*위 경우 /var/www/html 의 volume 으로 설정한 /var_www_html/ 경로에 그누보드 파일들을 압축해제했다

 

 

nginx.conf 파일 http 안에 server 추가

server {
        listen 443 ssl;

		ssl_certificate     [ssl_certificate 경로];
    	ssl_certificate_key [ssl_certificate_key 경로];

		error_log  /var/log/nginx/error.log;
        access_log /var/log/nginx/access.log;

        root /var/www/html;
        server_name [사이트 주소];
        index index.php;
        client_max_body_size 32m;
        
        #include snippets/rhymix.conf;

        #### 그누보드5 nginx rules BEGIN #####
        if (!-e $request_filename){
        rewrite ^/content/([0-9a-zA-Z_]+)$ /bbs/content.php?co_id=$1&rewrite=1 break;
        rewrite ^/content/([^/]+)/$ /bbs/content.php?co_seo_title=$1&rewrite=1 break;
        rewrite ^/rss/([0-9a-zA-Z_]+)$ /bbs/rss.php?bo_table=$1 break;
        rewrite ^/([0-9a-zA-Z_]+)$ /bbs/board.php?bo_table=$1&rewrite=1 break;
        rewrite ^/([0-9a-zA-Z_]+)/write$ /bbs/write.php?bo_table=$1&rewrite=1 break;
        rewrite ^/([0-9a-zA-Z_]+)/([^/]+)/$ /bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;
        rewrite ^/([0-9a-zA-Z_]+)/([0-9]+)$ /bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;
        }
        #### 그누보드5 nginx rules END #####
        
        location ~ \.php$ {
	    try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        #include snippets/fastcgi-php.conf;
	    include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }

 

docker-compose 실행

$ docker-compose up -d