From ce486ccb0e9c32115705e74278ce6719fa20f830 Mon Sep 17 00:00:00 2001 From: nkey Date: Fri, 23 Jan 2026 10:44:46 +0000 Subject: [PATCH] oracle-server stack --- .gitignore | 22 ++++++++++++++ docker-compose.yml | 65 ++++++++++++++++++++++++++++++++++++++++ nginx/conf.d/custom.conf | 64 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 .gitignore create mode 100644 docker-compose.yml create mode 100644 nginx/conf.d/custom.conf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49923d5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +# 데이터 디렉토리 (DB 데이터, n8n 작업물 등) +**/data/ +**/files/ +**/binaryData/ +**/node_modules/ + +# 보안 및 인증서 +**/.env +**/secrets/ +**/letsencrypt/ +**/*.pem +**/*.key +**/.runner + +# 시스템 로그 +**/*.log +**/*.journal + +# OS 관련 +.DS_Store +Thumbs.db + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4df6918 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,65 @@ +services: + php-app: + image: nkey01/laravel-wms:1.0.0 + container_name: php-app + restart: unless-stopped + env_file: + - .env + - ./wms/.env + depends_on: + - postgres + volumes: + - laravel_public:/var/www/html/public # public을 볼륨으로 뽑아서 nginx와 공유 + + nginx: + image: nginx:1.27-alpine + container_name: nginx + restart: unless-stopped + ports: + - "80:80" + volumes: + - ./nginx/conf.d:/etc/nginx/conf.d:ro + - laravel_public:/var/www/html/public:ro + depends_on: + - php-app + - n8n + + n8n: + image: n8nio/n8n:latest + container_name: n8n + restart: unless-stopped + ports: + - "5678:5678" + env_file: + - .env + - ./n8n/.env + environment: + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} + - DB_POSTGRESDB_USER=${POSTGRES_USER} + - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} + - N8N_PATH=/n8n/ + - N8N_EDITOR_BASE_URL=${BASE_URL} + volumes: + - ./n8n/data:/home/node/.n8n + - ./n8n/files:/files + depends_on: + - postgres + + postgres: + image: postgres:15 + container_name: postgres + restart: unless-stopped + ports: + - "5432:5432" + env_file: + - .env + volumes: + - pgdata:/var/lib/postgresql/data + +volumes: + pgdata: + laravel_public: + diff --git a/nginx/conf.d/custom.conf b/nginx/conf.d/custom.conf new file mode 100644 index 0000000..7965a0f --- /dev/null +++ b/nginx/conf.d/custom.conf @@ -0,0 +1,64 @@ +upstream php_fpm { + server php-app:9000; +} + +upstream n8n_backend { + server n8n:5678; +} + +server { + listen 80; + server_name _; + + root /var/www/html/public; + index index.php index.html; + + # ===== 2) n8n - /n8n/ 경로로 분리 ===== + # ^~ 를 붙여서, 이 location이 매치되면 정규식(~, ~*) location은 무시하게 만들기 + location ^~ /n8n/ { + proxy_pass http://n8n_backend/; + proxy_http_version 1.1; + + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + proxy_read_timeout 600s; + proxy_send_timeout 600s; + } + + # ===== 1) WMS (Laravel) - 루트로 사용 ===== + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + include fastcgi_params; + + fastcgi_pass php_fpm; + fastcgi_index index.php; + + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + + fastcgi_read_timeout 600s; + fastcgi_send_timeout 600s; + } + + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { + try_files $uri $uri/ @laravel; + expires 30d; + access_log off; + } + + location @laravel { + fastcgi_pass php_fpm; + fastcgi_param SCRIPT_FILENAME $document_root/index.php; + include fastcgi_params; + } +} +