728x90
반응형

간단한 홈페이지를 구축해야할 필요가 있었는데

 

Gnuboard를 Docker 이미지로 만들어서 헤로쿠에 배포하고 싶었다.

 

그래서 기존에 만들어진 것이 있는지 찾아보니 꽤 예전 버전이라 수정이 필요했다.

 

Dockerfile은 다음과 같이 만들었다.

FROM ubuntu:20.04
ARG DEBIAN_FRONTEND=noninteractive

# Run upgrades
RUN echo "deb http://it.archive.ubuntu.com/ubuntu/ focal main universe" > /etc/apt/sources.list
RUN apt-get update

# Install basic packages
RUN apt-get -qq -y install git curl build-essential

# Install Apache2
RUN apt-get -qq -y install apache2
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
RUN a2enmod rewrite
RUN sed -i -e "s/html/gnuboard5/" /etc/apache2/sites-available/000-default.conf

# Install php
RUN apt-get -qq -y install php7.4
RUN apt-get -qq -y install libapache2-mod-php7.4 php7.4-mysql php7.4-gd

# Install Mysql
RUN apt-get -qq -y install mysql-server mysql-client libmysqlclient-dev
RUN sed -i -e "s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf

# Install Gnuboard5
COPY gnuboard5 /var/www/gnuboard5

EXPOSE 80
ADD boot.sh /boot.sh
RUN chmod +x /boot.sh

CMD ["/bin/bash", "/boot.sh"]

이미지를 띄울 때 사용할 쉘 스크립트는 다음과 같이 작성했다.

#/bin/bash

# start mysql
nohup mysqld_safe --skip-grant-tables > /dev/null 2>&1 &
sleep 10

echo "CREATE USER 'gnuboard'@'localhost' IDENTIFIED BY 'gnub0ard';" | mysql
echo "CREATE DATABASE gnuboard;" | mysql
echo "GRANT ALL PRIVILEGES ON gnuboard.* TO 'gnuboard'@'localhost' WITH GRANT OPTION;" | mysql

# start apache2
sed -i "s/Listen 80/Listen ${PORT:-80}/g" /etc/apache2/ports.conf
sed -i "s/:80/:${PORT:-80}/g" /etc/apache2/sites-available/*
sed -i "s/:80/:${PORT:-80}/g" /etc/apache2/sites-enabled/*
rm -f /etc/apache2/mods-enabled/mpm_event.load
rm -f /etc/apache2/mods-enabled/mpm_event.conf
source /etc/apache2/envvars
/usr/sbin/apache2 -D FOREGROUND &

이렇게 작성해서 헤로쿠에 배포를 했으나 포트 번호가 계속 변경되는 문제로 되는 것만 확인하고 끝났다.

 

참고 문헌

  1. https://github.com/nacyot/docker-gnuboard5-mysql

  2. https://devcenter.heroku.com/articles/container-registry-and-runtime

반응형

+ Recent posts