SpringBoot37-分布式系统开发-基于Docker部署3
来源:互联网 发布:百分百圣洁知乎 编辑:程序博客网 时间:2024/06/08 06:20
以spring cloud开发的微服务程序是否适合在docker环境下部署。代码参考之前的博客:http://blog.csdn.net/j903829182/article/details/78511059
一,Dockerfile编写
前面博客的6个微服务的Dockerfile的编写几乎完全一致,下面以config模块为例。
1,runboot.sh脚本编写
位于src/main/docker下:
sleep 10java -jar /app/config.jar
根据启动顺序,调整sleep的时间
2,Dockerfile编写
位于src/main/docker下:
FROM hub.c.163.com/library/java:latestMAINTAINER jackVOLUME /tmpRUN mkdir /appADD config.jar /app/app.jarADD runboot.sh /app/RUN bash -c 'touch /app/app.jar'WORKDIR /appRUN chmod a+x runboot.shEXPOSE 8888CMD /app/runboot.sh
为不同的微服务我们只需修改:
ADD config.jar /app/app.jar
以及端口:
EXPOSE 8888
3,Docker的maven插件
在开发机器编译Docker镜像到服务器,使用docker-maven-plugin即可,在所有程序的pom.xml内增加下面代码:
<build><finalName>config</finalName><plugins><!--<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin>--><!--<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.20</version><configuration><skipTests>true</skipTests></configuration></plugin>--><!--在开发机器编译docker镜像到服务器使用docker-mave-plugin--><plugin><groupId>com.spotify</groupId><artifactId>docker-mave-plugin</artifactId><configuration><imageName>${project.name}:${project.version}</imageName><dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory><skipDockerBuild>false</skipDockerBuild><resources><resource><directory>${project.build.directory}</directory><include>${project.build.finalName}</include></resource></resources></configuration></plugin></plugins></build>
4,编译镜像
使用docker-maven-plugin,默认将Docker编译到localhost。如果是远程Linux服务器,请在环境变量中配置:DOCKER_HOST,本例的linux服务器地址是:192.168.0.104
在控制台进入代码的目录,执行下面的语句:
mvn clean package docker:build -DskipTests
编译后效果如下:
查看linux服务器上的镜像,如下:
二,Docker Compose
Docker Compose是用来定义和运行多容器应用的工具。关于Docker Compose的安装和使用可以查看:
https://docs.docker.com/compose/。
Docker Compose使用一个docker-compose.yml来描述多容器的定义,使用下面命令运行整个应用:
docker-compose up
三,docker-compose.yml编写
docker-compose.yml的编写代码如下:
postgresdb: image: busybox volumes: - /var/lib/postgresql/datapostgres: name: postgres image: postgres hostname: postgres volumes_from: - postgresdb#ports:# -"5432:5432" environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgresdiscovery: image: "discovery:1.0.0-SNAPSHOT" hostname: discovery name: discovery ports: - "8761:8761"config: image: "config:1.0.0-SNAPSHOT" hostname: config name: config links: - discovery environment: EUREKA_HOST: discovery EUREKA_PORT: 8761#ports:# - "8888:8888"person: image: person:1.0.0-SNAPSHOT hostname: person links: - discovery - config - postgres environment: EUREKA_HOST: discovery EUREKA_PORT: 8761 SPRING_PROFILES_ACTIVE: docker#ports:# - "8082:8082"some: image: some:1.0.0-SNAPSHOT hostname: some links: - discovery - config environment: EUREKA_HOST: discovery EUREKA_PORT: 8761 SPRING_PROFILES_ACTIVE: docker#ports: - "8083:8083"ui: image: ui:1.0.0-SNAPSHOT hostname: ui links: - discovery - config - person - some environment: EUREKA_HOST: discovery EUREKA_PORT: 8761 SPRING_PROFILES_ACTIVE: docker ports: - "80:80"monitor: image: monitor:1.0.0-SNAPSHOT hostname: monitor links: - discovery - config - person - some - ui environment: EUREKA_HOST: discovery EUREKA_PORT: 8761 SPRING_PROFILES_ACTIVE: docker#ports:# - "8989:8989"#enviroment:给容器使用的变量,在容器中使用${}来调用#links:当前容器依赖的容器,可直接使用依赖容器的已有端口#ports:将我们要暴露的端口映射出来,不需要暴露的端口则不做映射
四,运行
将docker-compose.yml上传至linux服务器,在文件当前目录执行下面命令:
docker-compose up -d
-d表示后台运行
启动效果如下:
源码地址:https://github.com/wj903829182/springcloud3
- SpringBoot37-分布式系统开发-基于Docker部署3
- 基于Docker 分布式部署solrCloud
- .NET企业服务开发分布式系统--部署
- 基于Docker集群的分布式测试系统DDT(DockerDistributedTest)
- 基于Zabbix + Docker开发的监控系统
- 基于Docker部署codis
- 基于docker、kubernetes部署openstack到atomic系统上
- SpringBoot32-springboot开发部署与测试-云部署,基于Docker的部署
- docker项目开发部署
- 分布式系统之部署
- 基于docker的应用服务部署
- 基于docker的codis3部署
- 使用docker搭建部署hadoop分布式集群
- hadoop之docker伪分布式部署
- 开发基于GPRS的分布式金融管理系统
- 基于PB环境下分布式应用系统的开发
- 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构
- 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构
- 11月13日笔记
- 2017网络新生赛题解
- 章节6 目标板配置
- CentOS配置ip
- 存放字符串的指针数组相关应用
- SpringBoot37-分布式系统开发-基于Docker部署3
- Android Studio 如何快速添加override或者implements方法
- codeforces-886-E. Maximum Element(Технокубок 2018
- 期望和平均值有什么区别
- Linux命令之CD
- Best Time to Buy and Sell Stock with Transaction Fee
- Java单例模式学习
- bigdata-01
- register_chrdev函数