novel-cloud/doc/docker/docker-compose.yml
2023-04-02 04:28:33 +08:00

161 lines
4.8 KiB
YAML

version: '3.9'
services:
novel-mysql:
container_name: novel-mysql
image: mysql:${MYSQL_VERSION}
restart: always
hostname: novel-mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes:
- "/data/docker/mysql/data:/var/lib/mysql"
- "/data/docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql"
command: mysqld --max_allowed_packet=100M
ports:
- "3306:3306"
networks:
- novelnet
novel-redis:
container_name: novel-redis
image: redis:${REDIS_VERSION}
restart: always
hostname: novel-redis
command: redis-server --save 60 1 --loglevel warning --requirepass "${REDIS_PASSWORD}"
ports:
- "6379:6379"
networks:
- novelnet
novel-rabbitmq:
container_name: novel-rabbitmq
image: rabbitmq:${RABBITMQ_VERSION}
restart: always
hostname: novel-rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
- RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST}
ports:
- "15672:15672"
- "5672:5672"
networks:
- novelnet
novel-elasticsearch-setup:
container_name: novel-elasticsearch-setup
image: elasticsearch:${ELASTIC_VERSION}
hostname: novel-elasticsearch-setup
user: "0"
command: >
bash -c '
echo "Waiting for Elasticsearch availability";
until curl -s http://novel-elasticsearch:9200 | grep -q "missing authentication credentials"; do sleep 30; done;
echo "Setting kibana_system password";
until curl -s -X POST -u "elastic:${ELASTIC_PASSWORD}" -H "Content-Type: application/json" http://novel-elasticsearch:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done;
echo "All done!";
'
networks:
- novelnet
novel-elasticsearch:
container_name: novel-elasticsearch
image: elasticsearch:${ELASTIC_VERSION}
restart: always
hostname: novel-elasticsearch
environment:
- "ES_JAVA_OPTS=-Xms125m -Xmx512m"
- discovery.type=single-node
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
- KIBANA_PASSWORD=${KIBANA_PASSWORD}
- xpack.security.http.ssl.enabled=false
ports:
- "9200:9200"
depends_on:
- novel-elasticsearch-setup
networks:
- novelnet
novel-kibana:
container_name: novel-kibana
image: kibana:${KIBANA_VERSION}
restart: always
hostname: novel-kibana
environment:
- ELASTICSEARCH_HOSTS=http://novel-elasticsearch:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
# - ELASTICSEARCH_SSL_VERIFICATIONMODE=none
ports:
- "5601:5601"
depends_on:
- novel-elasticsearch
networks:
- novelnet
novel-xxl-job-admin:
container_name: novel-xxl-job-admin
image: xuxueli/xxl-job-admin:${XXLJOB_VERSION}
restart: always
hostname: novel-xxl-job-admin
environment:
- PARAMS=--spring.datasource.url=jdbc:mysql://novel-mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=${MYSQL_ROOT_PASSWORD} --xxl.job.accessToken=${XXLJOB_ACCESSTOKEN}
- JAVA_OPTS=-Xmx512m
volumes:
- /data/docker/xxl-job-admin/data/applogs:/data/applogs
ports:
- "8080:8080"
depends_on:
- novel-mysql
networks:
- novelnet
novel-nacos-server:
container_name: novel-nacos-server
image: nacos/nacos-server:${NACOS_VERSION}
restart: always
hostname: novel-nacos-server
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=novel-mysql
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
- NACOS_AUTH_IDENTITY_KEY=xxyopen
- NACOS_AUTH_IDENTITY_VALUE=xxyopen
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
- JVM_XMS=125M
- JVM_XMX=125M
- JVM_XMN=50M
- JVM_MS=50M
- JVM_MMS=50M
ports:
- "8848:8848"
- "9848:9848"
depends_on:
- novel-mysql
networks:
- novelnet
novel-monitor:
build: ./novel-monitor
image: novel-monitor:2.0.1
container_name: novel-monitor
restart: "always"
environment:
- NACOS_ADDR=novel-nacos-server:8848
ports:
- "8898:8898"
depends_on:
- novel-nacos-server
networks:
- novelnet
networks:
novelnet:
driver: bridge