昨天的一篇微服务项目中涉及到docker部署,今天写一篇关于微服务项目部署在docker容器中运行,使用github上另外一个比较经典的微服务项目piggyMetric,项目的github地址:https://github.com/sqshq/piggymetrics,这个项目和昨天那篇的项目很类似----

一个简单的微服务项目带你上手spring cloud 全家桶

一、创建piggymetrics项目

1.1 下载好的项目导入到eclipse中,结构如下:

1.2 在项目的各个子模块下,使用maven的install命令,将各个子模块打包成jar包,存放在target目录下以及maven仓库下

可先使用clean命令清除target目录下的文件,再使用install命令(eclipse中已经安装了maven插件)

每个模块的操作一样。然后就在每个项目的target目录下生成该模块的jar包了,JRE System Library使用的是jdk1.8.

在本地的workspace中:

各个模块使用maven的install命令,全部生成了jar包之后,查看模块下的Dockfile文件,例如rigistry模块的Dockfile文件(注意必须写成Dockfile,D要大写)

FROM java:8-jre
MAINTAINER Alexander Lukyanchikov <sqshq@sqshq.com>ADD ./target/registry.jar /app/
CMD ["java", "-Xmx200m", "-jar", "/app/registry.jar"]EXPOSE 8761

说明:Dockfile文件中FROM指定创建该镜像之前需要的基础镜像,这里表示需要java 8的jre运行环境的镜像,MAINTAINER表示该镜像的维护信息

ADD 是该微服务模块生成的jar包需要拷贝一份到linux服务器的位置,这里就是表示从该微服务模块的target目录下,复制一份registry.jar到/app/目录下

CMD是执行的命令,一个Dockfile只有一条CMD命令

EXPOSE 表示对外暴露的端口号

其他各个模块的Dockfile编写的基本上差不多,只需要替换各自模块的自己的内容即可

1.3 将项目打包为tar包上传到linux系统

使用filezilla工具将tar包上传到linux服务器上(我是在本地安装了centos7虚拟机,使用的是 VMware Workstation安装的,需要先启动虚拟机)

1.3.1 启动虚拟机:

1.3.2 使用filezilla连接上远程centos7系统 

使用sftp协议,ip地址填写centos7虚拟机的ip地址,端口号写22,然后就是用户名和密码,连接上远程服务器

上传文件:

1.3.3 使用secureCRT工具连接远程centos7系统(可以直接使用终端命令)

我现在是已经连接上了的

然后使用cd 命令切换到piggymetrics的tar包所在目录,对tar包进行解压

然后cd命令切换到解压后的PiggyMetrics-master目录下

切换到registry目录下,可以看到Dockerfile文件,

1.3.4 接下来使用dock命令执行Dockfile文件

使用docker命令的前提是需要linux上安装了docker,这里还需要使用到docker compose,所以一并安装吧,安装教程可以参考这篇博客:

CentOS7 - Docker&Docker-Compose安装

安装好之后,接下来启动docker服务

sudo systemctl start docker

其他相关命令:

启动后,进入到各个模块,例如进入registry模块下,执行命令

docker  build -t registry . (注意后边有个空格和点)

依次在各个模块执行该命令,创建各个模块的镜像-t 之后写的是镜像的名称

各个模块镜像创建完成后:

docker images命令查看创建的进行:

可以看到各个模块的镜像都已经创建成功(我已经在本周五的时候全都已经创建好了镜像,所以创建时间是40多小时前)

1.3.5 接下来设置一下docker,允许其远程访问

使用命令 vim  /usr/lib/systemd/system/docker.service打开服务配置文件,按下i键进入插入模式修改配置,修改好后,按esc退出编辑模式,然后输入:wq! 强制保存退出。

将上一行注释掉,修改成下边那样:

ExecStart=ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://va/run/docker.sock

1.3.6 使用docker容器启动镜像,例如启动registry镜像:

命令:docker run -i -t registry /bin/bash

已经启动了容器,并进入容器中,在容器中无法使用docker ps查看容器进程状态,此时需要退出容器同时又不关闭容器,按住ctrl+p+q

使用docker ps 命令可以看到registry镜像已经在容器中运行了

然后再使用docker run命令启动其他服务模块的镜像。但是这样真的比较麻烦。所以这里推荐使用docker compose来依次启动多个容器,从而启动多个镜像。

1.3.7 使用docker compose启动容器

切换到PiggyMetric-master目录下:

这里有两个docker-compose文件,是yml格式的配置文件,这两个文件可以使用安装的docker compose工具执行

再转回到eclipse中,查看docker-compose.yml文件的内容:

version: '2.1'
services:rabbitmq:image: rabbitmq:3-managementrestart: alwaysports:- 15672:15672logging:options:max-size: "10m"max-file: "10"config:environment:CONFIG_SERVICE_PASSWORD: adminimage: sqshq/piggymetrics-configrestart: alwayslogging:options:max-size: "10m"max-file: "10"registry:environment:CONFIG_SERVICE_PASSWORD: adminimage: sqshq/piggymetrics-registryrestart: alwaysdepends_on:config:condition: service_healthyports:- 8761:8761logging:options:max-size: "10m"max-file: "10"gateway:environment:CONFIG_SERVICE_PASSWORD: adminimage: sqshq/piggymetrics-gatewayrestart: alwaysdepends_on:config:condition: service_healthyports:- 80:4000logging:options:max-size: "10m"max-file: "10"auth-service:environment:CONFIG_SERVICE_PASSWORD: adminNOTIFICATION_SERVICE_PASSWORD: adminSTATISTICS_SERVICE_PASSWORD: adminACCOUNT_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminimage: sqshq/piggymetrics-auth-servicerestart: alwaysdepends_on:config:condition: service_healthylogging:options:max-size: "10m"max-file: "10"auth-mongodb:environment:MONGODB_PASSWORD: adminimage: sqshq/piggymetrics-mongodbrestart: alwayslogging:options:max-size: "10m"max-file: "10"account-service:environment:CONFIG_SERVICE_PASSWORD: adminACCOUNT_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminimage: sqshq/piggymetrics-account-servicerestart: alwaysdepends_on:config:condition: service_healthylogging:options:max-size: "10m"max-file: "10"account-mongodb:environment:INIT_DUMP: account-service-dump.jsMONGODB_PASSWORD: adminimage: sqshq/piggymetrics-mongodbrestart: alwayslogging:options:max-size: "10m"max-file: "10"statistics-service:environment:CONFIG_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminSTATISTICS_SERVICE_PASSWORD: adminimage: sqshq/piggymetrics-statistics-servicerestart: alwaysdepends_on:config:condition: service_healthylogging:options:max-size: "10m"max-file: "10"statistics-mongodb:environment:MONGODB_PASSWORD: adminimage: sqshq/piggymetrics-mongodbrestart: alwayslogging:options:max-size: "10m"max-file: "10"notification-service:environment:CONFIG_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminNOTIFICATION_SERVICE_PASSWORD: adminimage: sqshq/piggymetrics-notification-servicerestart: alwaysdepends_on:config:condition: service_healthylogging:options:max-size: "10m"max-file: "10"notification-mongodb:image: sqshq/piggymetrics-mongodbrestart: alwaysenvironment:MONGODB_PASSWORD: adminlogging:options:max-size: "10m"max-file: "10"monitoring:environment:CONFIG_SERVICE_PASSWORD: adminimage: sqshq/piggymetrics-monitoringrestart: alwaysdepends_on:config:condition: service_healthyports:- 9000:8080logging:options:max-size: "10m"max-file: "10"turbine-stream-service:environment:CONFIG_SERVICE_PASSWORD: adminimage: sqshq/piggymetrics-turbine-stream-servicerestart: alwaysdepends_on:config:condition: service_healthyports:- 8989:8989logging:options:max-size: "10m"max-file: "10"

在linux上切换到PiggyMetrics-master目录下

执行命令docker-compose -f docker-compose-base.yml up -d,接下来会运行整个项目。

会执行很久时间。

1.3.8 在本地浏览器访问一下

上边提示访问失败,超时。检查项目中各模块的yml文件配置,其实就是上一篇中提到的提到的hostname问题。

例如:

将对应的hostname全部改成localhost

微服务项目部署在docker容器运行相关推荐

  1. Docker容器 - DockerFile发布Java微服务并部署到Docker容器

    目录 通过idea新建一个普通微服务项目 一.新建项目 二.POM 三.YML 四.启动类 五.Controller类 启动 通过Dockerfile发布微服务部署到docker容器 一.通过idea ...

  2. 用idea插件将一个spring boot项目部署到docker容器里运行

    修改docker配置文件 1.编辑docker.service脚本 /usr/lib/systemd/system/docker.service 2.在docker.service中加入脚本并保存退出 ...

  3. 微服务项目部署服务器,第3章 3.2 部署服务器 - 编排多个微服务

    开发部署流程 开发部署流程.png 规划磁盘使用 在服务器上运行的Docker容器可以分为两类, 一类是业务型,主要是业务相关的接口服务,该类型容器采用了之前设计的代码镜像分离的原则,代码存储在Git ...

  4. Dockerfile制作jdk镜像和微服务镜像部署的最佳实践【Dockerfile实战】

    因为公司之前搭建测试服务器是我搭建的,其中包含使用docker来部署微服务项目,于是将这篇Dockerfile的最佳实践记录于此,为避免大家被坑,希望此文能帮你解除疑惑~ ps:因为是公司服务器不是个 ...

  5. 一个简单的微服务项目带你上手spring cloud 全家桶

    最近一个月,断断续续学习了spring cloud的主流微服务模块,然后实践了一个比较容易上手的微服务项目,现在做一个总结. 这个项目是在github上的一个比较经典的spring cloud易上手的 ...

  6. 新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战

    新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战 近年来,微服务架构已经成为企业标配,它以更加灵活的部署方式和高度解耦的架构设计,为企业带来了极大的业 ...

  7. IDEA集成Docker插件实现一键自动打包部署微服务项目

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  8. docker部署微服务项目

    上次有人说部署单个springboot项目和ssm写的非常的简单可以写一篇docker部署微服务的结构的文章的吗 安排 什么是微服务? 微服务架构是一种将单个应用程序作为一套小型服务开发的方法,每种应 ...

  9. Docker学习篇——使用Docker部署账单微服务项目

    Docker概念 Docker 是一个开源的应用容器引擎 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) Docker 可以让开发者打包他们 ...

最新文章

  1. 新概念英语(1-73)The way to King Street
  2. C# .net中json字符串和对象之间的转化方法
  3. zookeeper系列(二)实战master选举
  4. VTK:行军案用法实战
  5. 蓝桥杯-算法提高-凶手 断案
  6. 湖北2018年GDP同比增长7.8% 进出口增速有所回升
  7. 虎扑APP遭全网下架 原因未知
  8. 资中筠 - 百度百科
  9. Web服务器处理Servlet处理请求过程
  10. wifi密码破解案列
  11. 【Python量化】风险平价策略
  12. Linux进阶 | 超详细全方面的Docker Swarm Web集群介绍与部署!
  13. 零基础学平面设计怎么掌握好基础
  14. java hasfocus_说说Flutter中的无名英雄 —— Focus
  15. ArcGIS 10 Desktop完全破解方法
  16. 【SVPWM】SVPWM算法推导及其Simulink仿真(一)
  17. Android实现关机代码
  18. java 操作 word 表格和样式_java 处理word文档 (含图片,表格内容)
  19. 2022(招聘季)linux面试高频题
  20. java 实时监控微信扫码支付,支付成功跳转到成功页面

热门文章

  1. 是否可以在SQLite数据库中一次插入多行?
  2. 七彩虹智能主板设置U盘启动教程
  3. C# json解析字符串总是多出双引号_一篇长文带你在python里玩转Json数据
  4. linux mint 18安装中文,无法在Linux Mint 18.1“Serena”下安装pyFFTW
  5. JQ实现 todolist案例(记事本)
  6. Java基础概念干货(字符、标识符、数据类型... ...)
  7. 基本结构标签(HTML)
  8. THREEJS - 动态标签(texture纹理方式)
  9. 洛谷P3261 [JLOI2015]城池攻占(左偏树)
  10. CountDownLatch使用解说