create compose file for all services

This commit is contained in:
2025-05-05 15:23:00 +03:30
parent e82d8c22ad
commit 154174a2c1
3 changed files with 143 additions and 0 deletions

23
.env.example Normal file
View File

@@ -0,0 +1,23 @@
PROJECT_NAME=""
LARAVEL_PROJECT_PATH="./laravel"
POSTGRES_USER=""
POSTGRES_DB=""
POSTGRES_PASSWORD=""
NOTIFICATION_SERVER_PATH=""
NOTIFICATION_SERVER_DB=""
NOTIFICATION_SERVER_USER=""
NOTIFICATION_SERVER_PASSWORD=""
NOTIFICATION_SERVER_DB_SSL=""
NOTIFICATION_SERVER_DB_SYNC=""
NOTIFICATION_SERVER_PORT=""
REDIS_HOST=""
REDIS_PORT=""
NEXT_JS_PATH=""
NEXT_PUBLIC_VERSION=""
NEXT_PUBLIC_API_URL=""
NEXT_PUBLIC_SERVER_SOCKET_URL=""

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
.env
.idea
data

117
docker-compose.yml Normal file
View File

@@ -0,0 +1,117 @@
services:
backend_db:
image: postgres:17-alpine3.21
container_name: backend_db
tty: true
ports:
- "8050:5432"
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./data:/var/lib/postgresql/data
profiles:
- server
networks:
- crm_network
notification_db:
image: postgres:17-alpine3.21
container_name: notification_db
tty: true
ports:
- "8070:5432"
environment:
POSTGRES_DB: ${NOTIFICATION_SERVER_DB}
POSTGRES_USER: ${NOTIFICATION_SERVER_USER}
POSTGRES_PASSWORD: ${NOTIFICATION_SERVER_PASSWORD}
volumes:
- ./notification:/var/lib/postgresql/data
profiles:
- server
networks:
- crm_network
redis:
image: redis:7-alpine3.21
container_name: redis
restart: unless-stopped
tty: true
profiles:
- server
networks:
- crm_network
laravel:
build:
context: ${LARAVEL_PROJECT_PATH}
dockerfile: Dockerfile
container_name: ${PROJECT_NAME}
tty: true
ports:
- "9000:9000"
volumes:
- ./laravel:/var/www/crm
profiles:
- server
networks:
- crm_network
depends_on:
- backend_db
notification_server:
build:
context: ${NOTIFICATION_SERVER_PATH}
dockerfile: Dockerfile
container_name: notification_server
environment:
- NODE_ENV=production
- DB_HOST=notification_db
- DB_PORT=5432
- DB_USERNAME=${NOTIFICATION_SERVER_USER}
- DB_PASSWORD=${NOTIFICATION_SERVER_PASSWORD}
- DB_DATABASE=${NOTIFICATION_SERVER_DB}
- DB_SSL=${NOTIFICATION_SERVER_DB_SSL}
- DB_SYNC=${NOTIFICATION_SERVER_DB_SYNC}
- PORT=${NOTIFICATION_SERVER_PORT}
- REDIS_HOST=${REDIS_HOST}
- REDIS_PORT=${REDIS_PORT}
ports:
- "3023:${NOTIFICATION_SERVER_PORT}"
volumes:
- ${NOTIFICATION_SERVER_PATH}:/var/www/crm-notification-server
profiles:
- server
networks:
- crm_network
depends_on:
- backend_db
- laravel
- notification_db
- redis
nextjs:
build:
context: ${NEXT_JS_PATH}
dockerfile: Dockerfile
container_name: nextjs
environment:
- NEXT_PUBLIC_VERSION=${NEXT_PUBLIC_VERSION}
- NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}
- NEXT_PUBLIC_SERVER_SOCKET_URL=${NEXT_PUBLIC_SERVER_SOCKET_URL}
ports:
- "3000:3000"
env_file:
- .env.local
restart: unless-stopped
profiles:
- server
networks:
- crm_network
networks:
crm_network:
driver: bridge