first commit
This commit is contained in:
224
docker-compose copy.yaml
Normal file
224
docker-compose copy.yaml
Normal file
@@ -0,0 +1,224 @@
|
||||
---
|
||||
services:
|
||||
postgres:
|
||||
restart: always
|
||||
image: "postgres:15.1-alpine"
|
||||
container_name: phoenixDB # Hostname
|
||||
# logging:
|
||||
# driver: loki
|
||||
# options:
|
||||
# loki-url: "${LOKI_URL}"
|
||||
# loki-retries: "${LOKI_RETRIES}"
|
||||
# loki-batch-size: "${LOKI_BATCH_SIZE}"
|
||||
# loki-external-labels: "service=phx-postgres,env=prod"
|
||||
networks:
|
||||
- backend
|
||||
environment:
|
||||
DEBUG: true
|
||||
POSTGRES_DB: ${DB_NAME}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
volumes:
|
||||
- "./database:/var/lib/postgresql/data"
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
|
||||
interval: 5s # Time between each health check
|
||||
timeout: 2s # Number of failures before marking as unhealthy
|
||||
retries: 5 # Grace period before health checks start
|
||||
pgadmin:
|
||||
image: dpage/pgadmin4
|
||||
container_name: pgAdmin4_Ui
|
||||
user: "5050:5050"
|
||||
# logging:
|
||||
# driver: loki
|
||||
# options:
|
||||
# loki-url: "${LOKI_URL}"
|
||||
# loki-retries: "${LOKI_RETRIES}"
|
||||
# loki-batch-size: "${LOKI_BATCH_SIZE}"
|
||||
# loki-external-labels: "service=phx-pgadmin,env=prod"
|
||||
networks:
|
||||
- backend
|
||||
- frontend
|
||||
environment:
|
||||
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
|
||||
PGADMIN_DEFAULT_PASSWORD: ${SUPER_ADMIN_USER_PASSWORD}
|
||||
PGADMIN_CONFIG_SERVER_MODE: 'True'
|
||||
PGADMIN_CONFIG_WSGI_SCRIPT_NAME: "'/pgadmin4'"
|
||||
PGADMIN_CONFIG_PROXY_X_PROTO_COUNT: 1
|
||||
PGADMIN_SERVER_JSON_FILE: '/var/lib/pgadmin/servers.json'
|
||||
PGADMIN_REPLACE_SERVERS_ON_STARTUP: 'True'
|
||||
PGADMIN_CONFIG_DATA_DIR: "'/var/lib/pgadmin'"
|
||||
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: 'False'
|
||||
|
||||
# pgpass dynamic vars
|
||||
PGPASSFILE: /var/lib/pgadmin/pgpass
|
||||
PGPASS_HOST: ${DB_HOST}
|
||||
PGPASS_PORT: ${DB_PORT}
|
||||
PGPASS_DB: ${DB_NAME}
|
||||
PGPASS_USER: ${DB_USERNAME}
|
||||
PGPASS_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
|
||||
# Other config
|
||||
ALLOW_SAVE_PASSWORD: 'False'
|
||||
MFA_ENABLED: 'True'
|
||||
MFA_FORCE_REGISTRATION: 'False'
|
||||
MFA_SUPPORTED_METHODS: 'email'
|
||||
MFA_EMAIL_SUBJECT: 'Your MFA code by PHX-ERP'
|
||||
MAX_LOGIN_ATTEMPTS: 5
|
||||
ENHANCED_COOKIE_PROTECTION: 'True'
|
||||
SHOW_GRAVATAR_IMAGE: 'True'
|
||||
SECURITY_EMAIL_SENDER: ${SECURITY_EMAIL_SENDER}
|
||||
MAIL_SERVER: ${MAIL_SERVER}
|
||||
MAIL_PORT: ${MAIL_PORT}
|
||||
MAIL_USE_SSL: 'False'
|
||||
MAIL_USE_TLS: 'False'
|
||||
MAIL_USERNAME: ${MAIL_USERNAME}
|
||||
MAIL_PASSWORD: ${MAIL_PASSWORD}
|
||||
MAIL_DEBUG: 'False'
|
||||
volumes:
|
||||
- ./pgadmin/data:/var/lib/pgadmin
|
||||
- ./pgadmin/pgadmin-entrypoint.sh:/docker-entrypoint.sh:ro
|
||||
entrypoint: ["/bin/sh", "/docker-entrypoint.sh"]
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-O", "-", "http://localhost:80/misc/ping"]
|
||||
interval: 15s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 60s
|
||||
phoenix-app:
|
||||
restart: always
|
||||
image: "phxerp/phoenix-app:alpha"
|
||||
container_name: phoenixAppProd
|
||||
volumes:
|
||||
- "/opt/containers/phx/app_custom:/usr/share/nginx/html/assets/custom"
|
||||
- "/opt/containers/phx/nginx/nginx.conf:/etc/nginx/nginx.conf"
|
||||
- ./nginx/includes:/etc/nginx/includes:ro
|
||||
ports:
|
||||
- "8081:80" # This port might be relate to Traefik, needs to be checked, since this compose is different from our default compose.
|
||||
- "3000:3000" # Restrict to only allow access from Grafana Server IP
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.phxalpha.entrypoints=https"
|
||||
- "traefik.http.routers.phxalpha.rule=Host(`alpha.phx-erp.de`)"
|
||||
- "traefik.http.routers.phxalpha.middlewares=secHeaders@file"
|
||||
- "traefik.http.routers.phxalpha.tls=true"
|
||||
- "traefik.http.routers.phxalpha.tls.certresolver=http"
|
||||
- "traefik.http.routers.phxalpha.service=phxalpha"
|
||||
- "traefik.http.services.phxalpha.loadbalancer.server.port=80"
|
||||
- "traefik.docker.network=proxy"
|
||||
|
||||
- "traefik.http.routers.phxalpha-insecure.entrypoints=http"
|
||||
- "traefik.http.routers.phxalpha-insecure.rule=Host(`alpha.phx-erp.de`)"
|
||||
- "traefik.http.routers.phxalpha-insecure.tls=false"
|
||||
networks:
|
||||
- backend
|
||||
- frontend
|
||||
depends_on:
|
||||
pgadmin:
|
||||
condition: service_healthy
|
||||
phoenix-system:
|
||||
restart: always
|
||||
image: "phxerp/phoenix-system:alpha"
|
||||
# logging:
|
||||
# driver: loki
|
||||
# options:
|
||||
# loki-url: "${LOKI_URL}"
|
||||
# loki-retries: "${LOKI_RETRIES}"
|
||||
# loki-batch-size: "${LOKI_BATCH_SIZE}"
|
||||
# loki-external-labels: "service=phoenix-system,env=prod"
|
||||
environment:
|
||||
- "DB_HOST=phoenixDB"
|
||||
- "DB_NAME=${DB_NAME}"
|
||||
- "DB_PASSWORD=${POSTGRES_PASSWORD}"
|
||||
- "DB_USERNAME=postgres"
|
||||
- "SUPER_ADMIN_USER_PASSWORD=${SUPER_ADMIN_USER_PASSWORD}"
|
||||
- "REDIS_PASSWORD=${REDIS_PASSWORD}"
|
||||
- RUN_JOB_QUEUE=${RUN_JOB_QUEUE}
|
||||
- NODE_ENV=${NODE_ENV}
|
||||
command: ["npm", "run", "start:server"]
|
||||
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- "./logs:/usr/src/app/packages/dev-server/logs"
|
||||
- "asset-data:/usr/src/app/packages/dev-server/assets"
|
||||
- "/opt/containers/phx/server_custom:/usr/src/app/packages/dev-server/custom" # it seems tobe no effect if we make changes, not 100% of sure!
|
||||
networks:
|
||||
- postgres
|
||||
deploy:
|
||||
replicas: 1
|
||||
phoenix-worker:
|
||||
restart: always
|
||||
image: "phxerp/phoenix-system:alpha"
|
||||
environment:
|
||||
- DB_HOST=phoenixDB
|
||||
- "DB_PASSWORD=${POSTGRES_PASSWORD}"
|
||||
- DB_USERNAME=postgres
|
||||
- "SUPER_ADMIN_USER_PASSWORD=${SUPER_ADMIN_USER_PASSWORD}"
|
||||
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
||||
# command: ["npm", "run", "start:worker"]
|
||||
entrypoint: ./entrypoint-phoenix-worker.sh
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
# - "/opt/containers/phx/assets:/usr/src/app/packages/dev-server/custo/assets"
|
||||
# - "asset-data:/usr/src/app/packages/dev-server/assets"
|
||||
- "/opt/containers/phx/server_custom:/usr/src/app/packages/dev-server/custom"
|
||||
- "./logs:/usr/src/app/packages/dev-server/logs"
|
||||
networks:
|
||||
- postgres
|
||||
node_exporter:
|
||||
image: quay.io/prometheus/node-exporter:latest
|
||||
container_name: node_exporter
|
||||
ports:
|
||||
- "9100:9100" # Exposing the metrics port
|
||||
networks:
|
||||
- metrics
|
||||
restart: unless-stopped
|
||||
command:
|
||||
- "--path.procfs=/host/proc"
|
||||
- "--path.sysfs=/host/sys"
|
||||
- "--path.rootfs=/host"
|
||||
- "--collector.filesystem.ignored-mount-points=^/(sys|proc|dev)($$|/)"
|
||||
volumes:
|
||||
- "/proc:/host/proc:ro"
|
||||
- "/sys:/host/sys:ro"
|
||||
- "/:/host:ro,rslave"
|
||||
phoenix-redis:
|
||||
image: 'bitnami/redis:latest'
|
||||
container_name: redis
|
||||
#command: redis-server --save 20 1 --appendonly no --requirepass ${REDIS_PASSWORD} --loglevel warning
|
||||
command: /opt/bitnami/scripts/redis/run.sh --maxmemory 100mb --appendonly no
|
||||
user: root # Non-root user in Bitnami images The /bitnami/redis/data directory inside the container is already owned by 1001, avoiding permission issues.
|
||||
restart: always
|
||||
environment:
|
||||
# REDIS_APPENDFSYNC: "always"
|
||||
ALLOW_EMPTY_PASSWORD: "no"
|
||||
# REDIS_DISABLE_COMMANDS: FLUSHDB,FLUSHALL,CONFIG
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
healthcheck:
|
||||
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- /opt/containers/phx/redis/data:/bitnami/redis/data
|
||||
- /opt/containers/phx/redis/tmp:/opt/bitnami/redis/tmp # ✅ Fix permission issue
|
||||
# - /opt/containers/phx/redis/logs:/opt/bitnami/redis/logs # ✅ Fix logs permission issue
|
||||
# - ./redis.conf:/opt/bitnami/redis/etc/redis.conf # ✅ Use a writable redis.conf
|
||||
volumes:
|
||||
db-data: null
|
||||
app-data: null
|
||||
asset-data: null
|
||||
pgadmin: null
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
driver: bridge
|
||||
proxy:
|
||||
external: true
|
||||
metrics:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user