Docker compose 설치
Docker가 이미 설치된 Debian에서 Docker compose를 설치하는 방법입니다.
Docker 설치하기 링크로 이동하시면 더욱 자세한 가이드가 있습니다.
sudo apt install docker-compose-plugin
아래 모든 작업은 사용자 환경에서 작업하는 Docker compose를 기반으로 합니다.
홈 폴더에 compose.d 폴더를 만들어 작업을 진행합니다.
mkdir ~/compose.d/{nginx,php,mariadb,build,htdocs} -p
.env
Docker compose에서 사용할 데이터베이스 설정을 관리합니다.
데이터베이스 설정은 사용자가 직접 지정해 주어야 합니다.
DB_ROOT_PASSWORD=default_root_password
DB_NAME=default
DB_USERNAME=default_username
DB_PASSWORD=default_password
compose.yaml
Nginx와 PHP, Mariadb 컨테이너에 필요한 설정이 모여 있습니다.
services:
nginx:
image: nginx:mainline-alpine
depends_on:
- php
- mariadb
networks:
- backend
- frontend
ports:
- "80:80"
volumes:
- ./htdocs/:/usr/share/nginx/html/
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
container_name: "web"
php:
build:
context: "./build"
dockerfile: "php"
networks:
- backend
volumes:
- ./htdocs/:/usr/share/nginx/html/
- ./php/docker-php-upload.ini:/usr/local/etc/php/conf.d/docker-php-upload.ini
container_name: "php"
mariadb:
build:
context: "./build"
dockerfile: "mariadb"
restart: always
volumes:
- ./mariadb:/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
nginx/default.conf
PHP 파일을 통해 Nginx로 들어올 때 PHP 컨테이너로 모든 요청을 보냅니다.
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
client_max_body_size 10M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
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;
}
location ~ /\.ht {
deny all;
}
}
php/docker-php-upload.ini
PHP에서 최대 업로드 가능한 파일의 크기를 설정합니다.
file_uploads = On
upload_max_filesize = 10M
post_max_size = 10M
max_execution_time = 6000
build/php
PHP에 필요한 설정입니다. PHP 컨테이너를 생성하면 자동으로 빌드합니다.
FROM php:8.3-fpm-alpine3.20
RUN apk add --no-cache --update \
libjpeg-turbo-dev freetype-dev libpng-dev \
libzip-dev icu-dev autoconf build-base \
imagemagick imagemagick-dev \
&& 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
RUN pecl install imagick && \
docker-php-ext-enable imagick
RUN sed -i -e 's/^www-data:x:[0-9]*:[0-9]*:/www-data:x:1000:1000:/' /etc/passwd && \
sed -i -e 's/^www-data:x:[0-9]*:/www-data:x:1000:/' /etc/group
build/mariadb
Mariab에 필요한 설정입니다. Mariadb 컨테이너를 생성하면 자동으로 빌드합니다.
FROM mariadb:latest
RUN sed -i -e 's/^mysql:x:[0-9]*:[0-9]*:/mysql:x:1000:1000:/' /etc/passwd && \
sed -i -e 's/^mysql:x:[0-9]*:/mysql:x:1000:/' /etc/group
Docker compose 실행하기
docker compose up -d
빌드한 이후 docker compose start
, docker compose restar
t, docker compose stop
으로 제어할 수 있습니다.
관련 문서

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