Files
IM_NEW/docker-compose.yml
T

234 lines
5.6 KiB
YAML

services:
nginx:
image: nginx:alpine
container_name: im-nginx
restart: always
ports:
- "8009:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- user-service
- contact-service
- group-service
- message-service
- file-service
- connector-service
networks:
- im-net
consul:
image: consul:1.15
container_name: im-consul
restart: always
volumes:
- ./consul/data:/consul/data
command: "agent -server -bootstrap-expect=1 -ui -client=0.0.0.0"
ports:
- "8501:8500"
networks:
- im-net
mysql:
image: mysql:8.0
container_name: im-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?MYSQL_ROOT_PASSWORD is required}
MYSQL_DATABASE: im_db
MYSQL_USER: im
MYSQL_PASSWORD: ${MYSQL_PASSWORD:?MYSQL_PASSWORD is required}
ports:
- "3307:3306"
command:
--default-authentication-plugin=mysql_native_password
volumes:
- mysql-data:/var/lib/mysql
networks:
- im-net
redis:
image: redis:7
container_name: im-redis
restart: always
command: redis-server --appendonly yes
ports:
- "6380:6379"
volumes:
- redis-data:/data
networks:
- im-net
rabbitmq:
image: rabbitmq:3-management
container_name: im-rabbitmq
restart: always
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:?RABBITMQ_DEFAULT_USER is required}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:?RABBITMQ_DEFAULT_PASS is required}
ports:
- "5673:5672"
- "15673:15672"
volumes:
- rabbitmq-data:/var/lib/rabbitmq
networks:
- im-net
# ── 业务服务 ──────────────────────────────────────
user-service:
image: reg.nxsir.cn/im/user-service:latest
container_name: im-user-service
restart: always
depends_on:
consul:
condition: service_started
mysql:
condition: service_started
redis:
condition: service_started
rabbitmq:
condition: service_started
ports:
- "5001:8080"
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8080
CONSUL_URL: http://consul:8500
networks:
- im-net
contact-service:
image: reg.nxsir.cn/im/contact-service:latest
container_name: im-contact-service
restart: always
depends_on:
consul:
condition: service_started
mysql:
condition: service_started
redis:
condition: service_started
rabbitmq:
condition: service_started
user-service:
condition: service_started
ports:
- "5002:8080"
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8080
CONSUL_URL: http://consul:8500
networks:
- im-net
group-service:
image: reg.nxsir.cn/im/group-service:latest
container_name: im-group-service
restart: always
depends_on:
consul:
condition: service_started
mysql:
condition: service_started
redis:
condition: service_started
rabbitmq:
condition: service_started
user-service:
condition: service_started
ports:
- "5003:8080"
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8080
CONSUL_URL: http://consul:8500
InternalApiKey: ${IM_INTERNAL_API_KEY:?IM_INTERNAL_API_KEY is required}
networks:
- im-net
message-service:
image: reg.nxsir.cn/im/message-service:latest
container_name: im-message-service
restart: always
depends_on:
consul:
condition: service_started
mysql:
condition: service_started
redis:
condition: service_started
rabbitmq:
condition: service_started
user-service:
condition: service_started
contact-service:
condition: service_started
group-service:
condition: service_started
ports:
- "5004:8080"
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8080
CONSUL_URL: http://consul:8500
InternalApiKey: ${IM_INTERNAL_API_KEY:?IM_INTERNAL_API_KEY is required}
networks:
- im-net
file-service:
image: reg.nxsir.cn/im/file-service:latest
container_name: im-file-service
restart: always
depends_on:
consul:
condition: service_started
mysql:
condition: service_started
redis:
condition: service_started
rabbitmq:
condition: service_started
group-service:
condition: service_started
ports:
- "5005:8080"
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8080
CONSUL_URL: http://consul:8500
InternalApiKey: ${IM_INTERNAL_API_KEY:?IM_INTERNAL_API_KEY is required}
networks:
- im-net
connector-service:
image: reg.nxsir.cn/im/connector-service:latest
container_name: im-connector-service
restart: always
depends_on:
consul:
condition: service_started
redis:
condition: service_started
rabbitmq:
condition: service_started
message-service:
condition: service_started
ports:
- "5008:8080"
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8080
CONSUL_URL: http://consul:8500
networks:
- im-net
networks:
im-net:
driver: bridge
volumes:
mysql-data:
redis-data:
rabbitmq-data: