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

별도의 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 파일로 설정 해줘야합니다. 실행된 도커 내부에서 파일을 복사한 후 업데이트 하여 다시 컨테이너 내부로 복사하는 과정을 진행합니다.
- php.ini-production 파일 복사
gnuboard-web컨테이너 내부에 있는 php.ini-production 파일을 php.ini 라는 이름으로 복사합니다
docker cp gnuboard-web:/usr/local/etc/php/php.ini-production ./php.ini
- 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
- DB 백업
docker exec gnuboard-db mysqldump -u gnuboard -pgnuboard123 gnuboard > backup.sql
- DB 복원
docker exec -i gnuboard-db mysql -u gnuboard -pgnuboard123 gnuboard < backup.sql