freeleaps-pub/devbox/devbox.local/example/docker-compose.yaml
2025-02-05 08:24:50 +00:00

107 lines
3.2 KiB
YAML

services:
mongodb:
container_name: freeleaps2-mongodb-alpha
image: mongo:latest
profiles: [ alpha ]
restart: always
ports:
- ${MONGODB_PORT}:${MONGODB_PORT}
volumes:
- freeleaps2-mongodb-data:/data/db
networks:
- freeleaps2-network
rabbitmq:
container_name: freeleaps2-rabbitmq
image: rabbitmq:3.13
profiles: [ alpha, rabbitmq ]
restart: always
ports:
- ${RABBITMQ_PORT}:${RABBITMQ_PORT}
- ${RABBITMQ_PORT_1}:${RABBITMQ_PORT_1}
volumes:
- freeleaps2-rabbitmq-data:/var/lib/rabbitmq
networks:
- freeleaps2-network
frontend:
container_name: freeleaps2-frontend
build:
context: ${FRONTEND_HOME}
args:
CONTAINER_APP_ROOT: ${CONTAINER_APP_ROOT}
FRONTEND_PORT: ${FRONTEND_PORT}
profiles: [ prod, alpha ]
restart: always
ports:
- ${FRONTEND_PORT}:${FRONTEND_PORT}
depends_on:
- backend
networks:
- freeleaps2-network
backend:
container_name: freeleaps2-backend
build:
context: ${BACKEND_HOME}
args:
CONTAINER_APP_ROOT: ${CONTAINER_APP_ROOT}
profiles: [ prod, alpha ]
restart: always
environment:
- CERT_PATH=/app/certs
- EMAIL_FROM=${EMAIL_FROM}
- MONGODB_URI=${MONGODB_URI}
- MONGODB_NAME=freeleaps2
- STRIPE_API_KEY=${STRIPE_API_KEY}
- STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET}
- STRIPE_ACCOUNT_WEBHOOK_SECRET=${STRIPE_ACCOUNT_WEBHOOK_SECRET}
- SITE_URL_ROOT=${SITE_URL_ROOT}
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- RABBITMQ_HOST=${RABBITMQ_HOSTNAME}
- RABBITMQ_PORT=${RABBITMQ_PORT}
- LOG_BASE_PATH=${LOG_BASE_PATH}
- BACKEND_LOG_FILE_NAME=${BACKEND_LOG_FILE_NAME}
- APPLICATION_ACTIVITY_LOG=${APPLICATION_ACTIVITY_LOG}
- USER_ACTIVITY_LOG=${USER_ACTIVITY_LOG}
- BACKEND_PORT=${BACKEND_PORT}
- FREELEAPS_ENV=${FREELEAPS_ENV}
- FREELEAPS_DEVSVC_ENDPOINT=${FREELEAPS_DEVSVC_ENDPOINT}
- FREELEAPS_CONTENT_ENDPOINT=${FREELEAPS_CONTENT_ENDPOINT}
- FREELEAPS_PAYMENT_ENDPOINT=${FREELEAPS_PAYMENT_ENDPOINT}
- FREELEAPS_CENTRAL_STORAGE_ENDPOINT=${FREELEAPS_CENTRAL_STORAGE_ENDPOINT}
- FREELEAPS_AUTHENTICATION_ENDPOINT=${FREELEAPS_AUTHENTICATION_ENDPOINT}
- CERT_PATH=${CERT_PATH}
- KAFKA_SERVER_URL=${KAFKA_SERVER_URL}
ports:
- ${BACKEND_PORT}:${BACKEND_PORT}
command:
# Use a conditional check for RabbitMQ in alpha profile
- /bin/sh
- -c
- |
if [[ \"${RABBITMQ_HOST}\" == 'freeleaps2-rabbitmq' ]]; then
while ! nc -z freeleaps2-rabbitmq ${RABBITMQ_PORT}; do
echo "Waiting for RabbitMQ to start..."
sleep 1
done
echo "RabbitMQ started"
fi
uvicorn freeleaps.webapi.main:app --host=0.0.0.0 --port=${BACKEND_PORT} --workers 4 --timeout-keep-alive 120 --log-level info
networks:
- freeleaps2-network
volumes:
- /secure/certs:/app/certs
- type: bind
source: $DOCKER_BACKEND_LOG_HOME
target: $LOG_BASE_PATH
volumes:
freeleaps2-mongodb-data:
freeleaps2-rabbitmq-data:
networks:
freeleaps2-network:
driver: bridge