docker-compose实践(携程apollo项目)

以携程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官方说明)

 

上一篇:Grep命令


下一篇:docker+nginx+tomcat+https搭建https环境下的服务器