본문 바로가기
프로그래밍 정보

Docker로 php+nginx+mariadb 개발 환경 만들기

by 웹마터 2025. 3. 7.

 

 

# Docker로 php 기본 개발환경을 만들어 보았습니다.

 

## 세부 파일내용

 

./docker-compose.yml

version: '3.1'

services:
  app:
    image: php:8.3-fpm
    container_name: php-app
    volumes:
      - ./app:/var/www/html
    depends_on:
      - db
    networks:
      - app-network

  db:
    image: mariadb:11.4
    container_name: mariadb-db
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: 1111
      MARIADB_DATABASE: aitools
      MARIADB_USER: aitools
      MARIADB_PASSWORD: aiGon2025!#
    volumes:
      - ./db/data:/var/lib/mysql
    ports:
      - "3308:3306"  # 외부에서 접근 가능하도록 포트 개방      
    networks:
      - app-network

  nginx:
    image: nginx:latest
    container_name: nginx-server
    ports:
      - "9080:80"
    volumes:
      - ./app:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app
    networks:
      - app-network

volumes:
  db-data:

networks:
  app-network:
    driver: bridge

 

 

./db/conf.d/my.cnf

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server           = utf8mb4
collation-server               = utf8mb4_unicode_ci

 

 

./db/initdb.d/table.sql

-- create table 쿼리 및 기본 데이터 insert 쿼리

 

 

./app/index.php

<?php
echo "php 시작페이지 입니다.";
?>

 

 

./nginx/default.conf

server {
    listen 80;
    server_name localhost;
    root /var/www/html;
    index index.php index.html index.htm;
    
    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

 

 

## 폴더 구조( cmd 명령어 : tree /f)

│  docker-compose.yml

├─app
│      index.php

├─db
│  ├─conf.d
│  │      my.cnf
│  │
│  ├─data
│  └─initdb.d
│          table.sql

└─nginx
        default.conf