以携程apollo项目为例,使用docker-compose部署单节点模式
创建apollo文件夹,vim一个新的docker-compose.yaml文件,文件内容如下:
version: '3' services: apollo-configservice: image: apolloconfig/apollo-configservice:latest # 镜像地址,这里使用的是直接在当前主机上构建的镜像 container_name: apollo-configservice ports: - "8080:8080" volumes: # 日志挂载 - /usr/local/apollo/servers/server2/logs/apollo-configservice:/opt/logs environment: # 可通过 SERVER_PORT 指定默认启动端口,ports 也需要对应修改 # SERVER_PORT: 8080 # 指定 homePageUrl 为当前宿主的 apollo-configservice 地址,不然会出现无法访问 JAVA_OPTS: "-Deureka.instance.homePageUrl=http://192.168.10.1:8080" # 数据库连接地址 SPRING_DATASOURCE_URL: 'jdbc:mysql://192.168.10.1:13306/ApolloConfigDB?characterEncoding=utf8' SPRING_DATASOURCE_USERNAME: 'XXX' SPRING_DATASOURCE_PASSWORD: '123456' depends_on: - apollo-db apollo-adminservice: image: apolloconfig/apollo-adminservice:latest # 镜像地址,这里使用的是直接在当前主机上构建的镜像 container_name: apollo-adminservice ports: - "8090:8090" volumes: # 日志挂载 - /usr/local/apollo/servers/server2/logs/apollo-adminservice:/opt/logs environment: # 指定 homePageUrl 为当前宿主的 apollo-adminservice 地址,不然会出现无法访问 JAVA_OPTS: "-Deureka.instance.homePageUrl=http://192.168.10.1:8090" # 数据库连接地址 SPRING_DATASOURCE_URL: 'jdbc:mysql://192.168.10.1:13306/ApolloConfigDB?characterEncoding=utf8' SPRING_DATASOURCE_USERNAME: 'root' SPRING_DATASOURCE_PASSWORD: '123456' depends_on: - apollo-configservice apollo-db: image: mysql:5.7 container_name: apollo-db command: --default-authentication-plugin=mysql_native_password environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 123456 depends_on: - apollo-dbdata ports: - "13306:3306" volumes: - ./sql:/docker-entrypoint-initdb.d volumes_from: - apollo-dbdata apollo-dbdata: image: alpine:latest container_name: apollo-dbdata volumes: - /var/lib/mysql apollo-portal: image: apolloconfig/apollo-portal:1.7.0 # 镜像地址,这里使用的是直接在当前主机上构建的镜像 container_name: apollo-portal ports: - "8070:8070" volumes: # 日志挂载 - /usr/local/apollo/servers/server1/logs/apollo-portal:/opt/logs environment: # 数据库连接地址 DS_URL: "jdbc:mysql://192.168.10.1:13306/ApolloPortalDB?characterEncoding=utf8" # 数据库用户名 DS_USERNAME: "root" # 数据库密码 DS_PASSWORD: "123456" # META_SERVER 地址 # PRO_META: "http://192.168.10.1:8080" #自定义相对路径 SERVER_SERVLET_CONTEXT_PATH: "/apollo" depends_on: - apollo-adminservice
进入apollo文件夹后,使用以下命令进行容器操作控制
docker-compose up (启动yml定义的所有服务,-d 后台启动)
docker-compose ps (查看已经启动的服务状态)
docker-compose kill (停止某个服务)
docker-compose logs (可以查看某个服务的log)
docker-compose port (打印绑定的public port)
docker-compose pull (pull服务镜像)
docker-compose stop (停止yml中定义的所有服务)
docker-compose start (启动被停止的yml中的所有服务)
docker-compose kill (强行停止yml中定义的所有服务)
docker-compose rm (删除yml中定义的所有服务)
docker-compose restart (重启yml中定义的所有服务)
apollo的三个服务是有先后依赖关系的,所以使用depends_on 对容器启动顺序进行编排
如需分布式部署,可将上述docker-compose进行拆分,在不同机器上部署admin、config的环境
将portal的XXXX_META设置或者在数据库更改(具体分布式部署配置请参考Apollo官方说明)