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

最新文章

  1. wifi 破解
  2. 高效SQL语句(SQL Server)
  3. Delphi新语法和ifthen的扩展联想
  4. SVG
  5. php之递归调用,递归创建目录
  6. 08-使用for循环输出杨辉三角(循环)
  7. 从源码的角度看Activity是如何启动的
  8. Python怎么样入门?Python基础入门教程
  9. MVC4 发布到II7或者IIS7.5遇到NO Find问题
  10. PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
  11. project5 大数据
  12. OSI(Open System Interconnect) 网络七层协议
  13. 【Linux高级驱动】rtc驱动开发
  14. linux 安装svn服务器
  15. elasticsearch geo_point 地理位置过滤 按经度排序
  16. 3-urllib的post请求方式
  17. 【大数据】Kafka学习笔记
  18. Win7系统(台式机)设置系统的窗口背景色(豆沙绿色)
  19. tensorflow 安装GPU版本,个人总结,步骤比较详细【转】
  20. sklearn 中 make_blobs模块

热门文章

  1. AI-Chat问答随笔
  2. anaconda新建的虚拟环境更改默认位置
  3. springmvc的Interceptor拦截器和servlet的filter过滤器
  4. robots.txt 文件说明
  5. Day20:update功能的实现
  6. ORA-01653:unable to extend table xxxxx by 8192 in tablespace xxxxx
  7. pip install -r 是什么意思
  8. 【Java学习Day10】类型转换
  9. drf Serializer基本使用
  10. &以及&&的用法总结