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 networks: novelnet: driver: bridge