使用docker-compose来部署开发环境
docker-compose的作用
docker-comopse可以帮助我们快速搭建起开发环境,比如你可以去把redis,mongodb,rabbitmq,mysql,eureka,configserver等一次部署在本机,然后让它们做为其它项目的基础,这是可以实现的。
容器之间的通讯-links
由于每个docker实例都是一个封闭的环境,所以默认情况下它们是不能共享的,即你的rabbit容器不能连接你的redis容器,你的configserver不能连接你的eureka容器,如果希望让它们之间进行数据通讯,需要设置links属性来实现,而在本机(宿主机)上进行连接时,使用localhost和端口是可以访问这些容器的,这个我们要清楚。
启动顺序-depends_on
而对于启动顺序来说,比如你的configserver依赖于eureka,希望先启动被依赖的容器,再运行自己,这时我们可以使用depends_on属性来实现,当然它也只是启动顺序,不能保证服务真的越来后再去启动另一个,解决的方法是使用失败重试机制restart: on-failure,当configserver失败后,你可以重启,直到成功为止(主是直到eureka启动越来为止)。
容器与容器之间要用服务名通讯
如果我们的具体项目也希望部署到docker-compose里,希望去访问其它的服务,这时,需要使用docker-compose里定义的服务名称,而不是localhost,因为当你的容器起来之后,它的localhost是自己的容器,而不是宿主机,反之在宿主机上,如果希望访问容器,可以使用localhost,这一点在前文中已经提到。
下面是我写的一个部署开发环境的例子
version: "3.3"
services:
# 公用组件相关配置
mongodb:
image: mongo:3.4.10
ports:
- "27017:27017"
networks:
- dev
volumes:
- mongo_data:/data/db
redis:
image: redis:3.2-alpine
networks:
- dev
ports:
- "6379:6379"
volumes:
- redis_data:/data
rabbit:
image: rabbitmq:3.6.10-management-alpine
hostname: rabbit
ports:
- "5672:5672"
- "15672:15672"
- "61613:61613"
networks:
- dev
environment:
RABBITMQ_DEFAULT_VHOST: pilipa
volumes:
- rabbitmq_data:/var/lib/rabbitmq
eurekaserver:
build: ./springcloud/eureka-server
restart: on-failure
ports:
- "8761:8761"
- "8762:8762"
networks:
- dev
configserver:
build: ./springcloud/config-server
restart: on-failure
ports:
- "8888:8888"
- "8889:8889"
networks:
- dev
depends_on:
- eurekaserver #依赖服务
links:
- eurekaserver
environment:
SPRING_PROFILES_ACTIVE: devops
volumes:
- /Users/lind.zhang/project/config-repo:/config_repo #前面是本地路径,后而是容器里的路径,在configserver里配置的是后面的容器路径
启动与更新
- 先打镜像
docker-compose build
- 再启动服务
docker-compose up -d #-d是后台运行
- 停止服务
docker-compose down
- 查看容器的日志
docker logs -f 容器ID
希望本文章对各位学者有所帮助!
使用docker-compose来部署开发环境的更多相关文章
- Linux 桌面玩家指南:18. 使用 Docker 隔离自己的开发环境和部署环境
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- 用 Docker 搭建 ORACLE 数据库开发环境
用 Docker 搭建 ORACLE 数据库开发环境 需要安装 ORACLE 数据库做开发,直接安装的话因为各类平台的限制,非常复杂,会遇到很多问题. 还好,现在有 Docker 化的部署方式,省去很 ...
- 如何通过Docker搭建一个swoft开发环境
本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...
- Docker Compose 一键部署LNMP
Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...
- Docker Compose 一键部署Nginx代理Tomcat集群
Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...
- Docker Compose 一键部署多节点爬虫程序
Docker Compose 一键部署多节点爬虫程序 目录结构 [root@localhost ~]# tree compose_crawler/ compose_crawler/ ├── cento ...
- maven(多个模块)项目 部署 开发环境 问题处理历程【异常Name jdbc is not bound in this Context 异常java.lang.NoSuchMethodE】
maven(多个模块)项目 部署 开发环境 问题处理历程[异常Name jdbc is not bound in this Context 异常java.lang.NoSuchMethodE] 201 ...
- PyCharm使用之利用Docker镜像搭建Python开发环境
在我们平时使用PyCharm的过程中,一般都是连接本地的Python环境进行开发,但是如果是离线的环境呢?这样就不好搭建Python开发环境,因为第三方模块的依赖复杂,不好通过离线安装包的方式安装 ...
- 五分钟用Docker快速搭建Go开发环境
挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...
随机推荐
- MySQL索引背后的数据结构及算法原理(转)
转自:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话 ...
- 支持不同Android设备,包括:不同尺寸屏幕、不同屏幕密度、不同系统设置
Some of the important variations that you should consider include different languages, screen sizes, ...
- 第一次冲刺意见汇总&团队第一阶段总结
大家对我们小组的意见基本是: 1.设计界面简单 2.功能较少 3.没有实现切换歌曲的功能 谢谢HT小组的走心评价 接下来我们组内准备:1.先调节用户界面,插入一些图片,美化界面,给用户直观的体验上升. ...
- 201771010118 马昕璐《面向对象程序设计java》第十二周学习总结
第一部分:理论知识学习部分 用户界面:用户与计算机系统(各种程序)交互的接口 图形用户界面:以图形方式呈现的用户界面 AET:Java 的抽象窗口工具箱包含在java.awt包中,它提供了许多用来设计 ...
- docker container(容器)
docker 容器 Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用 容器是从镜像创建的应用运行实例.它可以启动,开始,停止,删除,而这些容器都是彼此相互隔离,互不可见的. ...
- Spring源码学习-容器BeanFactory(五) Bean的创建-探寻Bean的新生之路
写在前面 上面四篇文章讲了Spring是如何将配置文件一步一步转化为BeanDefinition的整个流程,下面就到了正式创建Bean对象实例的环节了,我们一起继续学习吧. 2.初始化Bean对象实例 ...
- Tomcat问题
1 Tomcat控制台中文乱码 打开tomcat/conf/logging.properties 找到java.util.logging.ConsoleHandler.encoding = UTF-8 ...
- python从入门到实践-6章字典
#!/user/bin/env python# -*- coding:utf-8 -*- # 前面不用空格,后面空格# 访问只能通过keyalien_0 = {'color': 'green', 'p ...
- Data Center手册(1):架构
如图是数据中心的一个基本架构 最上层是Internet Edge,也叫Edge Router,也叫Border Router,它提供数据中心与Internet的连接. 连接多个网络供应商来提供冗余可靠 ...
- PHP GZIP压缩+BASE64
<?php $str = ' {"pf":"AC25c","dt":"2017-02-04 09:49:49",& ...