Docker compose 설치
Debian에서 Docker compose를 설치하는 방법입니다.
Docker 설치하기 링크로 이동하시면 더욱 자세한 가이드가 있습니다.
Bash
sudo apt install docker-compose-plugin
아래 모든 작업은 사용자 환경에서 작업하는 Docker compose를 기반으로 합니다.
홈 폴더에 compose 폴더를 만들어 작업을 진행합니다.
Bash
mkdir ~/compose/{apache,php,mariadb,database,htdocs} -p
.env
Docker compose에서 사용할 버전과 이름, 데이터베이스 설정을 관리합니다.
개발을 위해 특정 버전을 사용해야 하는 경우 버전을 변경할 수 있습니다.
데이터베이스 설정은 사용자가 직접 지정해 주어야 합니다.
.env
APACHE_VERSION=2.4
PHP_VERSION=8.2
MARIADB_VERSION=latest
NET_BACKEND=backend
NET_FRONTEND=frontend
DB_ROOT_PASSWORD=(DB에 사용할 ROOT 비밀번호)
DB_NAME=(자료를 저장할 DB 이름)
DB_USERNAME=(DB 로그인에 사용할 아이디)
DB_PASSWORD=(DB 로그인에 사용할 비밀번호)
compose.yaml
Apache2와 PHP, Mariadb 컨테이너에 필요한 설정이 모여 있습니다. 이곳에서 참조할 디렉토리 또는 포트 번호를 필요에 따라 다른 값으로 변경 가능합니다.
compose.yaml
services:
apache:
build:
context: './apache/'
args:
APACHE_VERSION: ${APACHE_VERSION}
depends_on:
- php
- mariadb
networks:
backend:
frontend:
ports:
- "80:80"
volumes:
- ./htdocs/:/var/www/html/
- ./apache/apache.conf:/usr/local/apache2/conf/apache.conf
container_name: "web"
php:
build:
context: './php/'
args:
PHP_VERSION: ${PHP_VERSION}
networks:
backend:
volumes:
- ./htdocs/:/var/www/html/
container_name: "php"
mariadb:
build:
context: './mariadb/'
args:
MARIADB_VERSION: ${MARIADB_VERSION}
restart: always
ports:
- "3306:3306"
volumes:
- ./database:/var/lib/mysql
networks:
backend:
environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
container_name: "db"
networks:
backend:
frontend:
apache/apache.conf
PHP파일이 Apache2로 들어올 때 PHP 컨테이너의 php-fpm으로 모든 요청을 보냅니다.
apache.conf
ServerName localhost
LoadModule deflate_module modules/mod_deflate.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule rewrite_module modules/mod_rewrite.so
<VirtualHost *:80>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/$1
DocumentRoot /var/www/html/
<Directory /var/www/html/>
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
CustomLog /proc/self/fd/1 common
ErrorLog /proc/self/fd/2
</VirtualHost>
apache/Dockerfile
Dockerfile
ARG APACHE_VERSION=""
FROM httpd:${APACHE_VERSION}-alpine
RUN echo "Include /usr/local/apache2/conf/apache.conf" \
>> /usr/local/apache2/conf/httpd.conf
php/Dockerfile
PHP에 필요한 설정입니다. PHP 컨테이너를 생성하면 자동으로 빌드합니다.
Dockerfile
ARG PHP_VERSION=""
FROM php:${PHP_VERSION:+${PHP_VERSION}-}fpm-alpine
RUN apk update; apk upgrade; \
apk add --no-cache libtool autoconf \
g++ make libmcrypt-dev libpng-dev \
freetype-dev libxpm-dev libwebp-dev \
libwebp libjpeg-turbo libpng freetype \
libxml2-dev curl-dev icu-dev icu-libs \
libzip shadow imagemagick imagemagick-libs \
imagemagick-dev libgcc libstdc++ libzip-dev \
libjpeg-turbo-dev libjpeg-turbo-utils \
linux-headers
RUN pecl install imagick xdebug &&
docker-php-ext-enable imagick.so xdebug.so &&
docker-php-ext-configure intl &&
docker-php-ext-configure gd \
--with-freetype --with-jpeg &&
docker-php-ext-install -j$(nproc) intl gd \
mysqli pdo_mysql zip exif &&
usermod -u 1000 www-data &&
groupmod -g 1000 www-data
mariadb/Dockerfile
Mariab에 필요한 설정입니다. Mariadb 컨테이너를 생성하면 자동으로 빌드합니다.
Dockerfile
ARG MARIADB_VERSION=""
FROM mariadb:${MARIADB_VERSION}
RUN usermod -u 1000 mysql &&
groupmod -g 1000 mysql
Docker compose 실행하기
Bash
docker compose up -d
빌드한 이후 docker compose start
, docker compose restar
t, docker compose stop
으로 제어할 수 있습니다.
관련 문서

INAS의 블LOG에 오신 것을 환영합니다