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


    docker-compose使用开源镜像启动容器

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

    docker-compose使用dockerfile构建镜像,并启动容器

    以上服务镜像都是开源镜像,所有没有使用DockerFile,如果项目中需要使用DockerFile构建自定义镜像,可以在docker-compose.yaml文件中 使用build关键字来来构建,如下:

    version: '3.0'
    services:
        test_container:
          build:
           context: ../
           dockerfile: DockerfileDev
          ports:
           - 81:80
          restart: unless-stopped
          container_name: test_container
          image: test_container
    • build中context指定设定上下文根目录,然后以该目录为准指定Dockerfile
    • dockerfile指定 Dockerfile 文件名
    • ports用于映射端口的标签。
    • 如果前面有了build那image则用来指定镜像名称,如果没有image则用来构建镜像
    • restart重启策略

    dockerFile文件相关知识点见下述链接

    1. Docker入门基础(一)

    2. Docker 实战(二)——centos7镜像安装nginx,将安装nginx的centos容器生成新的镜像,并导出

    3. Docker实战(三)--Dockerfile构建带nginx的centos镜像,并挂载
  • 相关阅读:
    用户登录就显示一部分按钮,未登录就显示登录按钮
    网页防止xss攻击
    前端页面使用编辑器
    Django框架
    参数*args与**kwargs
    Django的orm需要注意的地方
    查看Linux服务器配置命令
    PHP 浅析spl_autoload_register
    ubuntu服务器上安装PHP扩展bcmath遇到的问题Sub-process /usr/bin/dpkg returned an error code (1)
    JavaScript 变量and函数提升机制
  • 原文地址:https://www.cnblogs.com/shadow-yin/p/14853773.html
Copyright © 2020-2023  润新知