관리 메뉴

피터의 개발이야기

[php] Docker를 이용한 그누보드5 설치(php8, mysql:5.7, nginx) 본문

DevOps/php

[php] Docker를 이용한 그누보드5 설치(php8, mysql:5.7, nginx)

기록하는 백앤드개발자 2024. 3. 21. 18:48
반응형

ㅁ 들어가며

ㅇ 지인의 신규 서비스가 그누보드를 사용하고 있어서 그누보드5 환경을 Docker로 구성해 보았다.

ㅇ gnuboard5를 clone하여 nginx와 php, mysql을 구성하였다.

ㅇ 빠른 설치를 원하는 경우, [php] Docker를 이용한 그누보드5 초간단 설치방법을 참조.

 

ㅁ git clone gnuboard5

# gnuboard5 소스 복제
$ git clone https://github.com/gnuboard/gnuboard5.git
'gnuboard5'에 복제합니다...
remote: Enumerating objects: 81016, done.
remote: Counting objects: 100% (1431/1431), done.
remote: Compressing objects: 100% (657/657), done.
remote: Total 81016 (delta 789), reused 1236 (delta 681), pack-reused 79585
오브젝트를 받는 중: 100% (81016/81016), 54.87 MiB | 17.09 MiB/s, 완료.
델타를 알아내는 중: 100% (53947/53947), 완료.

# 폴더 확인
$ cd gnuboard5; ls
LICENSE.txt        _head.php          bbs                css                g4_import_run.php  img                js                 orderupgrade.php   shop               tail.php           version.php
README.md          _tail.php          common.php         extend             head.php           index.php          lib                perms.sh           shop.config.php    tail.sub.php       yc4_import.php
_common.php        adm                config.php         g4_import.php      head.sub.php       install            mobile             plugin             skin               theme              yc4_import_run.php

# data 폴더 생성
$ mkdir data

ㅇ작업을 위한 gnuboard 폴더를 생성하였다.

 

ㅁ nginx 이미지 빌드 구성

# build와 nignx 폴더 생성
$ mkdir build; cd build; mkdir nginx;

# PHP 설정을 위한 default.conf 생성
server {
        listen 80;
        root /var/www/html;
        index index.html index.htm index.php;

        server_name localhost;

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


        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass php:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
        }
}

# Dockerfile 생성
FROM nginx:latest

RUN apt-get update
RUN apt-get install git -y

COPY ./default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80

ENTRYPOINT ["nginx","-g","daemon off;"]

 

 

ㅁ PHP 이미지 빌드 구성

# build 폴더에 php 폴더 생성
$ mkdir php; cd; php

# Dockerfile 생성
FROM php:8.0.30-fpm

WORKDIR /root
RUN apt-get update


RUN apt-get update && apt-get install -y \
    git \
    curl \
    libcurl4 \
    libcurl4-openssl-dev \
    zlib1g-dev \
    libicu-dev \
    libmemcached-dev \
    memcached \
    libwebp-dev \
    build-essential \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    libxpm-dev \
    zip \
    libzip-dev \
    unzip

RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath mysqli opcache zip
RUN pecl install redis && docker-php-ext-enable redis
RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg --with-webp

RUN docker-php-ext-install gd

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

EXPOSE 9000

 

ㅁ mysql_data 생성

# 작업 폴더에 mysql_data 폴더 생성
$ mkdir mysql-data

 

 

ㅁ docker-compose.yml 생성

# docker-compose.yml 생성
version: '3.8'
services:
    db:
        image: mysql:5.7
        container_name: db
        restart: always
        environment:
            MYSQL_DATABASE: gnuboard
            MYSQL_USER: gnuboard
            MYSQL_PASSWORD: strongpwd
            MYSQL_ROOT_PASSWORD: superpwd
        ports:
            - "3306:3306"
        volumes:
            - ./mysql_data:/var/lib/mysql
    php:
        container_name: php
        build:
            context: ./build/php
            dockerfile: Dockerfile
        depends_on:
            - db
        ports:
            - "9000:9000"
        volumes:
            - ./gnuboard5:/var/www/html
    nginx:
        container_name: nginx
        build:
            context: ./build/nginx
            dockerfile: Dockerfile
        volumes:
            - ./gnuboard5:/var/www/html
            - ./build/nginx/default.conf:/etc/nginx/conf.d/default.conf
        depends_on:
            - php
        ports:
            - "80:80"
            - "443:443"

 

ㅁ docker-compose 실행

$ docker-compose up -d

 

 

 

ㅁ 그누보드 설치

ㅇ http://localhost 로 접속한다.

ㅇ 그누보드5 설치하기를 클릭한다.

ㅇ 약관동의한다.

 

ㅇ 위 사진처럼 MySQL 정보입력하고, 최고 관리자 정보를 입력한다.

 

ㅇ 그누보드5 설치가 완료되었다.

ㅇ 그누보드5로 이동을 클릭한다.

 

ㅇ 그누보드5 페이지가 완료되었다.

 

ㅁ 작업 중 중지 및 리소스 정리

# 컨테이너 정지
$ docker-compose stop

# 리소스 및 네트워크 자원 정리
$ docker-compose down

 

 

ㅁ 함께 보면 좋은 사이트

그누보드 간편설치 - 도커(Docker)로 그누보드5 개발환경 구성 - windows 10,11 ( nginx + php7.4 mariadb )

 

반응형

'DevOps > php' 카테고리의 다른 글

[php] Docker를 이용한 그누보드5 초간단 설치방법  (0) 2024.03.22
Comments