# version: "3.8" services: etcd: image: quay.io/coreos/etcd:v3.5.0 container_name: etcd-service environment: - ETCD_NAME=etcd-s1 - ETCD_DATA_DIR=/var/lib/etcd - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 - ./middle/data/etcd:/var/lib/etcd:rw ports: - 2379:2379 restart: always mysql: image: mysql:8.0.42 container_name: mysql-service environment: MYSQL_ROOT_PASSWORD: 123456 volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 - ./sql:/docker-entrypoint-initdb.d/:rw - ./middle/data/mysql:/var/lib/mysql:rw ports: - 3306:3306 restart: always redis: image: redis:7.0.15 container_name: redis-service volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 - ./middle/data/redis:/var/lib/redis:rw ports: - 6379:6379 restart: always elasticsearch: image: elasticsearch:7.17.21 container_name: elasticsearch-service environment: - "discovery.type=single-node" volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 - ./middle/data/elasticsearch:/data:rw ports: - 9200:9200 - 9300:9300 restart: always rabbitmq: image: rabbitmq:3.10.8 container_name: rabbitmq-service environment: RABBITMQ_DEFAULT_USER: root RABBITMQ_DEFAULT_PASS: 123456 volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 - ./middle/data/rabbitmq:/var/lib/rabbitmq:rw ports: - 5672:5672 restart: always file_server: build: ./file #image: server-user_server container_name: file_server-service volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 # 挂载的信息: entrypoint.sh文件 数据目录(im/logs, im/data), 配置文件 - ./conf/file_server.conf:/im/conf/file_server.conf - ./middle/data/logs:/im/logs:rw - ./middle/data/data:/im/data:rw - ./entrypoint.sh:/im/bin/entrypoint.sh ports: - 10002:10002 restart: always entrypoint: # 跟dockerfile中的cmd比较类似,都是容器启动后的默认操作--替代dockerfile中的cmd /im/bin/entrypoint.sh -h 10.0.0.235 -p 2379 -c "/im/bin/file_server -flagfile=/im/conf/file_server.conf" depends_on: - etcd friend_server: build: ./friend #image: file-server:v1 container_name: friend_server-service volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 # 挂载的信息: entrypoint.sh文件 数据目录(im/logs, im/data), 配置文件 - ./conf/friend_server.conf:/im/conf/friend_server.conf - ./middle/data/logs:/im/logs:rw - ./middle/data/data:/im/data:rw - ./entrypoint.sh:/im/bin/entrypoint.sh ports: - 10006:10006 restart: always depends_on: - etcd - mysql - elasticsearch entrypoint: # 跟dockerfile中的cmd比较类似,都是容器启动后的默认操作--替代dockerfile中的cmd /im/bin/entrypoint.sh -h 10.0.0.235 -p 2379,3306,9200 -c "/im/bin/friend_server -flagfile=/im/conf/friend_server.conf" gateway_server: build: ./gateway #image: file-server:v1 container_name: gateway_server-service volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 # 挂载的信息: entrypoint.sh文件 数据目录(im/logs, im/data), 配置文件 - ./conf/gateway_server.conf:/im/conf/gateway_server.conf - ./middle/data/logs:/im/logs:rw - ./middle/data/data:/im/data:rw - ./entrypoint.sh:/im/bin/entrypoint.sh ports: - 9000:9000 - 9001:9001 restart: always depends_on: - etcd - redis entrypoint: # 跟dockerfile中的cmd比较类似,都是容器启动后的默认操作--替代dockerfile中的cmd /im/bin/entrypoint.sh -h 10.0.0.235 -p 2379,6379 -c "/im/bin/gateway_server -flagfile=/im/conf/gateway_server.conf" message_server: build: ./message #image: file-server:v1 container_name: message_server-service volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 # 挂载的信息: entrypoint.sh文件 数据目录(im/logs, im/data), 配置文件 - ./conf/message_server.conf:/im/conf/message_server.conf - ./middle/data/logs:/im/logs:rw - ./middle/data/data:/im/data:rw - ./entrypoint.sh:/im/bin/entrypoint.sh ports: - 10005:10005 restart: always depends_on: - etcd - mysql - elasticsearch - rabbitmq entrypoint: # 跟dockerfile中的cmd比较类似,都是容器启动后的默认操作--替代dockerfile中的cmd /im/bin/entrypoint.sh -h 10.0.0.235 -p 2379,3306,9200,5672 -c "/im/bin/message_server -flagfile=/im/conf/message_server.conf" speech_server: build: ./speech #image: file-server:v1 container_name: speech_server-service volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 # 挂载的信息: entrypoint.sh文件 数据目录(im/logs, im/data), 配置文件 - ./conf/speech_server.conf:/im/conf/speech_server.conf - ./middle/data/logs:/im/logs:rw - ./middle/data/data:/im/data:rw - ./entrypoint.sh:/im/bin/entrypoint.sh ports: - 10001:10001 restart: always depends_on: - etcd entrypoint: # 跟dockerfile中的cmd比较类似,都是容器启动后的默认操作--替代dockerfile中的cmd /im/bin/entrypoint.sh -h 10.0.0.235 -p 2379 -c "/im/bin/speech_server -flagfile=/im/conf/speech_server.conf" transmite_server: build: ./transmite #image: file-server:v1 container_name: transmite_server-service volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 # 挂载的信息: entrypoint.sh文件 数据目录(im/logs, im/data), 配置文件 - ./conf/transmite_server.conf:/im/conf/transmite_server.conf - ./middle/data/logs:/im/logs:rw - ./middle/data/data:/im/data:rw - ./entrypoint.sh:/im/bin/entrypoint.sh ports: - 10004:10004 restart: always depends_on: - etcd - mysql - rabbitmq entrypoint: # 跟dockerfile中的cmd比较类似,都是容器启动后的默认操作--替代dockerfile中的cmd /im/bin/entrypoint.sh -h 10.0.0.235 -p 2379,3306,5672 -c "/im/bin/transmite_server -flagfile=/im/conf/transmite_server.conf" user_server: build: ./user #image: file-server:v1 container_name: user_server-service volumes: # 1. 希望容器内的程序能够访问宿主机上的文件 # 2. 希望容器内程序运行所产生的数据文件能落在宿主机上 # 挂载的信息: entrypoint.sh文件 数据目录(im/logs, im/data), 配置文件 - ./conf/user_server.conf:/im/conf/user_server.conf - ./middle/data/logs:/im/logs:rw - ./middle/data/data:/im/data:rw - ./entrypoint.sh:/im/bin/entrypoint.sh ports: - 10003:10003 restart: always depends_on: - etcd - mysql - redis - elasticsearch entrypoint: # 跟dockerfile中的cmd比较类似,都是容器启动后的默认操作--替代dockerfile中的cmd /im/bin/entrypoint.sh -h 10.0.0.235 -p 2379,3306,5672,9200 -c "/im/bin/user_server -flagfile=/im/conf/user_server.conf"