그누보드 개발환경을 Docker로 구성하기

2025-03-16 | 그누보드 개발환경을 Docker로 구성하기

og_image

별도의 APM을 설치할 필요없이 편리하게 도커 컨테이너로 그누보드의 개발환경을 구성할 수 있습니다.

docker-compose.yml

apache와 php, mysql 구성으로 docker 컨테이너를 만들기 위한 설정을 아래와 같이 작성해줍니다.

services:
  web:
    build: ./apache-php
    container_name: gnuboard-web
    ports:
      - "8080:80"
    volumes:
      - ./gnuboard5:/var/www/html
      - ./uploads:/var/www/html/data
      - ./php.ini:/usr/local/etc/php/php.ini
    depends_on:
      - db
    environment:
      - DB_HOST=db
      - DB_USER=gnuboard
      - DB_PASSWORD=gnuboard123
      - DB_NAME=gnuboard

  db:
    image: mysql:5.7
    container_name: gnuboard-db
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: gnuboard
      MYSQL_USER: gnuboard
      MYSQL_PASSWORD: gnuboard123
    volumes:
      - db_data:/var/lib/mysql
    ports:
      - "3316:3306"

volumes:
  db_data:

폴더 생성

현재 폴더에서 하위 폴더로 apache-php, gnuboard, uploads 폴더를 생성해줍니다. uploads 폴더는 data 폴더와 대응하도록 docker-compose.yml 파일에서 설정되어있습니다.

mkdir -p {apache-php,gnuboard5,uploads}

apache 설정

위에서 생성한 apache-php 폴더에서 도커 파일을 생성합니다. apache-php/Dockerfile

FROM php:7.4-apache

# 필수 패키지 설치
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libzip-dev \
    zip \
    unzip

# PHP 확장 설치
RUN docker-php-ext-install mysqli pdo pdo_mysql gd zip

# 아파치 모듈 활성화
RUN a2enmod rewrite

github 저장소에서 gnuboard 클론

위에서 생성한 gnuboard5 폴더에 최신 버전 그누보드를 클론합니다.

git clone https://github.com/gnuboard/gnuboard5.git /gnuboard5

아파치 설정

apache-php/000-default.conf 경로에 파일 생성하고 아래와 같이 입력합니다.

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

도커 실행

작성된 내용을 바탕으로 docker 컨테이너를 실행합니다. 필요한 패키지들을 설치하는데 시간이 약간 소요됩니다.

docker-compose up -d

php.ini 설정

그누보드에 필요한 내용들을 php.ini 파일로 설정 해줘야합니다. 실행된 도커 내부에서 파일을 복사한 후 업데이트 하여 다시 컨테이너 내부로 복사하는 과정을 진행합니다.

  1. php.ini-production 파일 복사

gnuboard-web컨테이너 내부에 있는 php.ini-production 파일을 php.ini 라는 이름으로 복사합니다

docker cp gnuboard-web:/usr/local/etc/php/php.ini-production ./php.ini
  1. php.ini 오버라이드

php.ini 에서 아래와 같이 허용되는 용량을 수정해줘야 합니다. 직접 수정해도 되지만, 아래에 사용된 명령어(linux ubuntu 기준)를 사용하는 것이 편리합니다.

memory_limit = 512M
upload_max_filesize = 50M
post_max_size = 50M

아래 명령어로 php.ini 파일 내부의 내용을 업데이트할 수 있습니다.

sed -i 's/memory_limit = ./memory_limit = 512M/' php.ini
sed -i 's/upload_max_filesize = ./upload_max_filesize = 50M/' php.ini
sed -i 's/post_max_size = .\*/post_max_size = 50M/' php.ini

php.ini를 docker 내부로 복사

이제 업데이트된 내용을 도커 내부로 복사하여 적용합니다.

docker cp ./php.ini gnuboard-web:/usr/local/etc/php/php.ini

도커 재시작

변경된 php.ini 파일을 적용하기 위해 도커를 재시작해줍니다.

docker restart gnuboard-web

그누보드 설치

그누보드를 설치할 준비는 모두 마쳤습니다. 아래 경로를 통해 설치화면으로 진입합니다.

http://localhost:8080/install

mysql database 설정에 필요한 내용은 아래와 같이 작성해줍니다.

데이터베이스 서버 host: db

데이터베이스 사용자: gnuboard

데이터베이스 비밀번호: gnuboard123

데이터베이스 이름: gnuboard

기타 명령어

docker-compose stop
docker-compose logs -f web
docker exec gnuboard-db mysqldump -u gnuboard -pgnuboard123 gnuboard > backup.sql
docker exec -i gnuboard-db mysql -u gnuboard -pgnuboard123 gnuboard < backup.sql
배현기
baehyunki

프론트엔드 웹 개발과 HTML 템플릿 제작, 3D 일러스트레이션 / 아이콘 제작을 하고 있습니다. 블로그에는 공부한 내용들을 정리하고 있습니다.

문의를 남겨주세요

최대한 빠른 시간에 답변드리겠습니다.

또는텔레그램으로도 문의를 남기실 수 있습니다.