Files
fastapi_best_architecture/docker-compose.yml

173 lines
3.8 KiB
YAML

services:
fba_server:
build:
context: .
dockerfile: Dockerfile
image: fba_server:latest
container_name: fba_server
restart: always
depends_on:
- fba_mysql
- fba_redis
- fba_celery
volumes:
- ./deploy/backend/docker-compose/.env.server:/fba/backend/.env
- fba_static:/fba/backend/app/static
networks:
- fba_network
command:
- bash
- -c
- |
wait-for-it -s fba_mysql:3306 -s fba_redis:6379 -t 300
supervisord -c /etc/supervisor/supervisord.conf
supervisorctl restart
fba_mysql:
image: mysql:8.0.41
ports:
- "${DOCKER_MYSQL_MAP_PORT:-3306}:3306"
container_name: fba_mysql
restart: always
environment:
MYSQL_DATABASE: fba
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
volumes:
- fba_mysql:/var/lib/mysql
networks:
- fba_network
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--lower_case_table_names=1
# fba_postgres:
# image: postgres:16
# ports:
# - "${DOCKER_POSTGRES_MAP_PORT:-5432}:5432"
# container_name: fba_postgres
# restart: always
# environment:
# POSTGRES_DB: fba
# POSTGRES_PASSWORD: 123456
# TZ: Asia/Shanghai
# volumes:
# - fba_postgres:/var/lib/postgresql/data
# networks:
# - fba_network
fba_redis:
image: redis
ports:
- "${DOCKER_REDIS_MAP_PORT:-6379}:6379"
container_name: fba_redis
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- fba_redis:/data
networks:
- fba_network
fba_nginx:
image: nginx
ports:
- "8000:80"
container_name: fba_nginx
restart: always
depends_on:
- fba_server
volumes:
- ./deploy/backend/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- fba_static:/www/fba_server/backend/static
- fba_static_upload:/www/fba_server/backend/static/upload
networks:
- fba_network
# fba_ui:
# build:
# context: /root/fastapi_best_architecture_ui
# dockerfile: Dockerfile
# image: fba_ui:latest
# ports:
# - "80:80"
# - "443:443"
# container_name: fba_ui
# restart: always
# depends_on:
# - fba_server
# command:
# - nginx
# - -g
# - daemon off;
# volumes:
# # - local_ssl_pem_path:/etc/ssl/xxx.pem
# # - local_ssl_key_path:/etc/ssl/xxx.key
# - fba_static:/www/fba_server/backend/static
# networks:
# - fba_network
fba_rabbitmq:
hostname: fba_rabbitmq
image: rabbitmq:3.13.7
ports:
- "15672:15672"
- "5672:5672"
container_name: fba_rabbitmq
restart: always
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
volumes:
- fba_rabbitmq:/var/lib/rabbitmq
networks:
- fba_network
fba_celery:
build:
context: .
dockerfile: Dockerfile
args:
- SERVER_TYPE=celery
image: fba_celery:latest
ports:
- "8555:8555"
container_name: fba_celery
restart: always
depends_on:
- fba_rabbitmq
volumes:
- ./deploy/backend/docker-compose/.env.server:/fba/backend/.env
networks:
- fba_network
command:
- bash
- -c
- |
wait-for-it -s fba_rabbitmq:5672 -t 300
supervisord -c /etc/supervisor/supervisord.conf
supervisorctl restart
networks:
fba_network:
name: fba_network
driver: bridge
ipam:
driver: default
config:
- subnet: 172.10.10.0/24
volumes:
fba_mysql:
name: fba_mysql
fba_redis:
name: fba_redis
fba_static:
name: fba_static
fba_static_upload:
name: fba_static_upload
fba_rabbitmq:
name: fba_rabbitmq