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容器生成新的镜像,并导出

docker-compose实践(携程apollo项目)的更多相关文章

  1. 携程apollo系列-客户端集成

    本文讲解如何在 Java 程序中集成 Apollo 配置, 主要涉及到一些基础用法. 对于一些高级用法, 比如如何加密/解密配置项 (可用于数据库密码配置), 如何动态切换数据源地址,如何动态切换日志 ...

  2. 携程apollo系列-个人开发环境搭建

    本博客讲详细讲解如何在 Windows 搭建携程 Apollo 服务器 (用户个人开发). 开发服务器有多种搭建方式:(1) docker, 搭建过程非常简单, 推荐有 docker 环境(2) 部署 ...

  3. 分布式配置中心 携程(apollo)

    1.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐. 分布式配置文件:将配置文件注册到配置中心上去,可以使用分 ...

  4. CentOS 7 搭建基于携程Apollo(阿波罗)配置中心单机模式

    Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性.服务端基于Spring Boot ...

  5. 携程Apollo配置中心架构深度剖析

    转自:http://www.uml.org.cn/wfw/201808153.asp 一.介绍 Apollo(阿波罗)[参考附录]是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在 ...

  6. Spring Boot 2.0 整合携程Apollo配置中心

    原文:https://www.jianshu.com/p/23d695af7e80 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够 ...

  7. 携程Apollo统一配置中心的搭建和使用

    原文链接:https://blog.csdn.net/luhong327/article/details/81453001 一.Apollo配置中心介绍 1.What is Apollo 1.1 Ap ...

  8. Docker Compose 实践及梳理

    Docker Compose 可以实现 Docker 容器集群的编排,可以通过 docker-compose.yml 文件,定义我们的服务及其需要的依赖,轻松地运行在测试.生产等环境 文档 Produ ...

  9. 开源实践 | 携程在OceanBase的探索与实践

    写在前面:选型考虑 携程于1999年创立,2016-2018年全面推进应用 MySQL 数据库,前期线上业务.前端技术等以 SQL Server 为主,后期数据库逐步从 SQL Server 转到开源 ...

  10. SpringBoot 整合携程Apollo配置管理中心

    携程官网对apollo的使用讲解了很多种方式的使用,但是感觉一些细节还是没讲全,特别是eureka配置中心地址的配置 这里对springboot整合apollo说一下 >SpringBoot启动 ...

随机推荐

  1. Python 堆、栈和队列详解

    队列: 1.队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进 ...

  2. Xcode 12.x下载了iOS10.x模拟器无法创建对应Device问题修复

    转自: https://hiraku.tw/2021/04/6428/ 感谢原作者,如有侵权请评论联系删除文章 在升級到 Xcode 12 之後,有些人發現雖然 Xcode 允許安裝低版本的模擬器,但 ...

  3. 使用IntelliJ创建第一个简单的Springboot项目

    使用Intellij创建Springboot项目 使用IntelliJ创建Springboot项目是非常方便的,创建过程中,我们可以自由的选择要启用的springboot生态里的各种框架.插件.本文只 ...

  4. MyBatis_03(核心配置文件解析)

    核心配置的文件的"详解" -->(优化,核心配置文件) "核心配置文件的前言": 核心配置文件中的标签必须按照固定的顺序 ---> ("有 ...

  5. 2.mysql存储过程、存储函数与触发器

    -- 创建一个存储过程DELIMITER $CREATE PROCEDURE 存储过程名称(返回类型 参数名1 参数类型1, ....) [ ...... ]BEGIN -- 具体组成存储过程的SQL ...

  6. CAD梦想画图中的“绘图工具——多线段”

    CAD软件多线段命令是作为单个平面对象创建的相互连接的线段序列.可以创建直线段.圆弧段或两者的组合线段. 执行方式: (1)单击菜单栏"绘图→多线段".如图: (2)单击绘图工具栏 ...

  7. LeetCode习题集

    作为一名本科计算机科学与技术的学生,<数据结构与算法><算法分析与设计>这两门课没有学到特别好 上了研究生之后感觉,这些东西需要重新拾起 于是,我找了一个平台,LeetCode ...

  8. 大道至简读后感以及JAVA伪代码

    <大道至简>这本书引用<愚公移山>一文,生动完美的诠释了编程的整个过程.在两千年前的寓言中,愚公集项目组织者.团队经理.编程人员.技术分析师等众多角色于一身.首先是原始需求的产 ...

  9. zerotier的planet服务器(根服务器)-搭建教程

    应用场景介绍: 利用阿里云服务器,搭建根服务器,把不同局域网打通,实现内网穿透,远程控制. 准备工具:  1.服务端:云服务器(有公网IP)Centos 7.6 2.客户端:   工控机(或者家里电脑 ...

  10. GrADS CTL文件 VARS字段

    GrADS可以读取GRIB格式的再分析数据,如ERA5,CFSR,CRA40等.对于这些数据,借助grib2ctl/g2ctl程序,生成描述文件(*.ctl文件),再通过gribmap命令,生成索引文 ...