使用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 ...
随机推荐
- Linux-共享内存通信
Linux共享存储通信 内容 创建共享存储区实现进程通信 机理说明 共享存储区(Share Memory)是Linux系统中通信速度最高的通信机制.该机制中共享内存空间和进程的虚地址空间满足多对多的关 ...
- PBRT笔记(12)——蒙特卡洛积分
这里还涉及到pdf.方差等概念,推荐去看<全局光照技术:从离线到实时渲染> 积累分布函数 cumulative distribution function (CDF) 蒙特卡洛估算 为了计 ...
- Python3从零开始爬取今日头条的新闻【一、开发环境搭建】
Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...
- Hive管理表,外部表及外部分区表的深入探讨
Hive管理表,也叫内部表.Hive控制着管理表的整个生命周期,默认情况下Hive管理表的数据存放在hive的主目录:/user/hive/warehouse/下,并且当我们删除一张表时,这张表的数据 ...
- vue-cli跳转到新页面的顶部
我这里有两种方法都是可以用的 1,利用vue-router的默认模式hash,可以记录上一页的位置,如果需要点话,如果没有记录,在进入新页面的时候是返回到新页面的最顶部的 scrollBehavior ...
- spring-cloud-gateway负载普通web项目
spring-cloud-gateway负载普通web项目 对于普通的web项目,也是可以通过spring-cloud-gateway进行负载的,只是无法通过服务发现. 背景 不知道各位道友有没有使用 ...
- ES6 浏览器兼容性 和 Transpilation
浏览器兼容性 和 Transpilation 你的 web 浏览器可能每隔几个月就会提示你去更新,你知道为什么吗,主要是一些安全漏洞,新特性,以及支持新的 HTML.CSS 和 JavaScript ...
- 【ASP】session实现购物车
1.问题提出 利用session内置对象,设计并实现一个简易的购物车,要求如下: 1)利用用户名和密码,登录进入购物车首页 2)购物首页显示登录的用户名以及该用户是第几位访客.(同一用户的刷新应该记录 ...
- error: can't copy 'docx\templates\default-docx-template': doesn't exist or not a regular file --------------- Failed building wheel for python-docx; python-docx的安装使用;python操作word
本人第一安装python-docx很不幸就出现了,如下的错误:(如果你也遇到同样的错误,不要慌可以参考下面解决方案,由于第一次处理这种错误,如有不对欢迎大家多多批评指正) 问题所在是因为我们的setu ...
- new Date()设置日期在IOS的兼容问题
一般这样创建一个日期变量 var d = new Date("2017-08-11 12:00:00"); 发现在iOS中不兼容,返回valid Date. IOS中不支持 - 连 ...