使用 Docker Compose 部署 Apollo Quick Start
为了支持自定义脚本和日志文件,需要在原有配置中添加挂载点。同时,为了解决资源限制问题,增加了 ulimit 配置。
version: '2.1'
services:
apollo-quick-start:
image: nobodyiam/apollo-quick-start
container_name: apollo-quick-start-container
depends_on:
apollo-db-instance:
condition: service_healthy
ports:
- "8080:8080"
- "8070:8070"
- "8090:8090"
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
volumes:
- /home/user/yyx/apollo-quick-start-master/demo_script.sh:/apollo-quick-start/demo_script.sh
- /home/user/yyx/apollo-quick-start-master/service/console_log.txt:/apollo-quick-start/service/console_log.txt
links:
- apollo-db-instance
apollo-db-instance:
image: mysql:8.0
container_name: apollo-db-container
environment:
TZ: Asia/Shanghai
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 5s
timeout: 1s
retries: 10
depends_on:
- apollo-db-data
ports:
- "13306:3306"
volumes:
- ./sql:/docker-entrypoint-initdb.d
volumes_from:
- apollo-db-data
apollo-db-data:
image: alpine:latest
container_name: apollo-db-data-container
volumes:
- /var/lib/mysql
以下是 demo_script.sh 的内容:
#!/bin/bash
# 设置环境变量
if [[ -n "$JAVA_OPTS" ]]; then
echo JAVA_OPTS = $JAVA_OPTS
fi
# 数据库连接信息
apollo_config_db_url=${APOLLO_CONFIG_DB_URL:-"jdbc:mysql://192.168.0.176:13306/ApolloConfigDB?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai"}
apollo_config_db_username=${APOLLO_CONFIG_DB_USERNAME:-root}
apollo_config_db_password=${APOLLO_CONFIG_DB_PASSWORD:-}
apollo_portal_db_url=${APOLLO_PORTAL_DB_URL:-"jdbc:mysql://192.168.0.176:13306/ApolloPortalDB?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai"}
apollo_portal_db_username=${APOLLO_PORTAL_DB_USERNAME:-root}
apollo_portal_db_password=${APOLLO_PORTAL_DB_PASSWORD:-}
# 检查操作系统类型
if [ "$(uname)" == "Darwin" ]; then
windows="0"
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
windows="0"
elif [ "$(expr substr $(uname -s) 1 5)" == "MINGW" ]; then
windows="1"
else
windows="0"
fi
# 元数据服务器 URL
config_server_url=http://192.168.0.176:8080
admin_server_url=http://192.168.0.176:8090
eureka_service_url=$config_server_url/eureka/
portal_url=http://192.168.0.176:8070
# Java 参数设置
BASE_JAVA_OPTS="$JAVA_OPTS -Denv=dev"
CLIENT_JAVA_OPTS="$BASE_JAVA_OPTS -Dapollo.meta=$config_server_url"
SERVER_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url"
PORTAL_JAVA_OPTS="$BASE_JAVA_OPTS -Ddev_meta=$config_server_url -Dspring.profiles.active=github,auth -Deureka.client.enabled=false -Dhibernate.query.plan_cache_max_size=192"
# JAR 文件路径
JAR_FILE=apollo-all-in-one.jar
SERVICE_DIR=./service
SERVICE_JAR_NAME=apollo-service.jar
SERVICE_LOG=$SERVICE_DIR/apollo-service.log
PORTAL_DIR=./portal
PORTAL_JAR_NAME=apollo-portal.jar
PORTAL_LOG=$PORTAL_DIR/apollo-portal.log
CLIENT_DIR=./client
CLIENT_JAR=$CLIENT_DIR/apollo-demo.jar