177 lines
5.0 KiB
YAML
Executable File
177 lines
5.0 KiB
YAML
Executable File
services:
|
|
# 1. ADATBÁZIS
|
|
postgres-db:
|
|
image: postgres:15
|
|
container_name: postgres-db
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
volumes:
|
|
- ./postgres_data:/var/lib/postgresql/data
|
|
- ./postgres/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql
|
|
ports:
|
|
- "${POSTGRES_PORT}:${POSTGRES_PORT}"
|
|
networks:
|
|
- service_finder_net
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# 2. BACKEND API
|
|
service_finder_api:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
container_name: service_finder_api
|
|
volumes:
|
|
- ./backend:/app
|
|
- ./alembic.ini:/app/alembic.ini
|
|
- ./migrations:/app/migrations
|
|
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --proxy-headers --forwarded-allow-ips="*"
|
|
ports:
|
|
- "8000:8000"
|
|
environment:
|
|
- PYTHONPATH=/app
|
|
- DATABASE_URL=postgresql+asyncpg://${APP_DB_USER}:${APP_DB_PASSWORD}@postgres-db:5432/${APP_DB_NAME}
|
|
- SECRET_KEY=${SECRET_KEY}
|
|
- ALGORITHM=${ALGORITHM}
|
|
- ALLOWED_ORIGINS=https://dev.profibot.hu,
|
|
- MINIO_ENDPOINT=minio:9000
|
|
- MINIO_ACCESS_KEY=${POSTGRES_USER}
|
|
- MINIO_SECRET_KEY=${POSTGRES_PASSWORD}
|
|
- SENDGRID_API_KEY=${SENDGRID_API_KEY}
|
|
- POSTGRES_USER=${POSTGRES_USER}
|
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
|
- POSTGRES_DB=${POSTGRES_DB}
|
|
depends_on:
|
|
postgres-db:
|
|
condition: service_healthy
|
|
minio:
|
|
condition: service_started
|
|
redis:
|
|
condition: service_started
|
|
networks:
|
|
- service_finder_net
|
|
|
|
# 3. PGADMIN
|
|
pgadmin:
|
|
image: dpage/pgadmin4
|
|
container_name: pgadmin_ui
|
|
environment:
|
|
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
|
|
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
|
|
volumes:
|
|
- ./pgadmin_data:/var/lib/pgadmin
|
|
ports:
|
|
- "5050:80"
|
|
depends_on:
|
|
- postgres-db
|
|
networks:
|
|
- service_finder_net
|
|
|
|
# 4. MINIO
|
|
minio:
|
|
image: minio/minio
|
|
container_name: service_finder_minio
|
|
command: server /data --console-address ":9001"
|
|
environment:
|
|
MINIO_ROOT_USER: ${POSTGRES_USER}
|
|
MINIO_ROOT_PASSWORD: ${POSTGRES_PASSWORD}
|
|
volumes:
|
|
- /mnt/nas/app_data/minio_data:/data
|
|
ports:
|
|
- "9000:9000"
|
|
- "9001:9001"
|
|
networks:
|
|
- service_finder_net
|
|
|
|
# 5. REDIS
|
|
redis:
|
|
image: redis:alpine
|
|
container_name: service_finder_redis
|
|
volumes:
|
|
- /mnt/nas/app_data/redis_data:/data
|
|
networks:
|
|
- service_finder_net
|
|
|
|
# 6. CODE-SERVER
|
|
code-server:
|
|
image: codercom/code-server:latest
|
|
container_name: code-server
|
|
user: "0:0"
|
|
volumes:
|
|
- /opt/service_finder:/opt/service_finder
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- /opt/service_finder/.vscode_config:/root
|
|
environment:
|
|
- PASSWORD=${CODE_SERVER_PASSWORD}
|
|
- TERM=xterm-256color
|
|
- TZ=Europe/Budapest
|
|
working_dir: /opt/service_finder
|
|
ports:
|
|
- "8443:8080"
|
|
restart: unless-stopped
|
|
networks:
|
|
- service_finder_net
|
|
# Ez a rész telepíti az eszközöket minden indításkor:
|
|
command: >
|
|
command: >
|
|
sh -c "apt-get update &&
|
|
apt-get install -y ca-certificates curl gnupg mc python3 python3-pip htop &&
|
|
install -m 0755 -d /etc/apt/keyrings &&
|
|
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg &&
|
|
chmod a+r /etc/apt/keyrings/docker.gpg &&
|
|
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable\" | tee /etc/apt/sources.list.d/docker.list > /dev/null &&
|
|
apt-get update &&
|
|
apt-get install -y docker-ce-cli &&
|
|
dumb-init /usr/bin/code-server --bind-addr 0.0.0.0:8080 /opt/service_finder"
|
|
|
|
# 7. NGINX PROXY MANAGER
|
|
nginx-proxy:
|
|
image: 'jc21/nginx-proxy-manager:latest'
|
|
container_name: nginx-proxy-manager
|
|
restart: unless-stopped
|
|
ports:
|
|
- '80:80'
|
|
- '81:81'
|
|
- '443:443'
|
|
volumes:
|
|
- ./proxy-manager/data:/data
|
|
- ./proxy-manager/letsencrypt:/etc/letsencrypt
|
|
networks:
|
|
- service_finder_net
|
|
|
|
# 8. DOZZLE
|
|
dozzle:
|
|
image: amir20/dozzle:latest
|
|
container_name: dozzle
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
ports:
|
|
- "8888:8080"
|
|
restart: unless-stopped
|
|
networks:
|
|
- service_finder_net
|
|
|
|
# 9. Frontend konténer
|
|
service_finder_frontend:
|
|
build:
|
|
context: ./frontend
|
|
container_name: service_finder_frontend
|
|
ports:
|
|
- "3000:80"
|
|
environment:
|
|
- ALLOWED_ORIGINS=https://app.profibot.hu,
|
|
networks:
|
|
- service_finder_net
|
|
depends_on:
|
|
- service_finder_api
|
|
|
|
networks:
|
|
service_finder_net:
|
|
driver: bridge
|