微服务项目部署在docker容器运行

       昨天的一篇微服务项目中涉及到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 <[email protected]>

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目录下,可以看到Dockfile文件,

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-management
    restart: always
    ports:
      - 15672:15672
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  config:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
    image: sqshq/piggymetrics-config
    restart: always
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  registry:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
    image: sqshq/piggymetrics-registry
    restart: always
    depends_on:
      config:
        condition: service_healthy
    ports:
      - 8761:8761
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  gateway:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
    image: sqshq/piggymetrics-gateway
    restart: always
    depends_on:
      config:
        condition: service_healthy
    ports:
      - 80:4000
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  auth-service:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
      NOTIFICATION_SERVICE_PASSWORD: admin
      STATISTICS_SERVICE_PASSWORD: admin
      ACCOUNT_SERVICE_PASSWORD: admin
      MONGODB_PASSWORD: admin
    image: sqshq/piggymetrics-auth-service
    restart: always
    depends_on:
      config:
        condition: service_healthy
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  auth-mongodb:
    environment:
      MONGODB_PASSWORD: admin
    image: sqshq/piggymetrics-mongodb
    restart: always
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  account-service:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
      ACCOUNT_SERVICE_PASSWORD: admin
      MONGODB_PASSWORD: admin
    image: sqshq/piggymetrics-account-service
    restart: always
    depends_on:
      config:
        condition: service_healthy
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  account-mongodb:
    environment:
      INIT_DUMP: account-service-dump.js
      MONGODB_PASSWORD: admin
    image: sqshq/piggymetrics-mongodb
    restart: always
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  statistics-service:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
      MONGODB_PASSWORD: admin
      STATISTICS_SERVICE_PASSWORD: admin
    image: sqshq/piggymetrics-statistics-service
    restart: always
    depends_on:
      config:
        condition: service_healthy
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  statistics-mongodb:
    environment:
      MONGODB_PASSWORD: admin
    image: sqshq/piggymetrics-mongodb
    restart: always
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  notification-service:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
      MONGODB_PASSWORD: admin
      NOTIFICATION_SERVICE_PASSWORD: admin
    image: sqshq/piggymetrics-notification-service
    restart: always
    depends_on:
      config:
        condition: service_healthy
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  notification-mongodb:
    image: sqshq/piggymetrics-mongodb
    restart: always
    environment:
      MONGODB_PASSWORD: admin
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  monitoring:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
    image: sqshq/piggymetrics-monitoring
    restart: always
    depends_on:
      config:
        condition: service_healthy
    ports:
      - 9000:8080
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  turbine-stream-service:
    environment:
      CONFIG_SERVICE_PASSWORD: admin
    image: sqshq/piggymetrics-turbine-stream-service
    restart: always
    depends_on:
      config:
        condition: service_healthy
    ports:
    - 8989:8989
    logging:
      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

发布了74 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u011174699/article/details/102648451