1、环境准备

  1. 镜像推送到哪个远程仓库?
  2. 如何推送镜像?
  3. 需要提供哪些镜像?
  4. 每个镜像都需要哪些资源?
  5. 每个镜像制作时需要提供哪些环境参数?
  6. 部署架构图?

    1.1、远程镜像仓库

    服务器地址、账号、密码:

    1. 10.97.38.156
    2. ecmc
    3. ecmc

    远程仓库地址:
    devops-docker.pkg.coding.dev.efunds.com.cn/ecmc/docker-dev/

    1.2、推送镜像

  7. 在Dockerfile所在的目录执行 docker build -t 【镜像名】:【标签】 . 命令(别忘了最后面的 .),本地制作好镜像,docker images 查看镜像是否已在本地库:

image.png

  1. 登录远程仓库

在当前目录键入登录命令:

  1. docker login -u gdd-huanglm devops-docker.pkg.coding.dev.efunds.com.cn
  2. #密码
  3. Huanglm0801(开发机密码)

提示登录成功,再进行后面的操作。
image.png

  1. 给本地镜像打标签

这里打镜像的目的是给你要推送的目标镜像在远程仓库一个标签。如图远程仓库:
image.png
打标签的命令:

  1. docker tag 【镜像名称:标签】 【镜像名称:标签】
  2. #举例
  3. docker tag ecmc-ui:r1 devops-docker.pkg.coding.dev.efunds.com.cn/ecmc/docker-dev/ecmc-ui:1.0.0

可再次执行 docker images 查看镜像,仓库中是否存在新标签的镜像。

  1. 推送镜像

推送镜像的命令:

  1. docker push 【镜像名:标签】
  2. #举例
  3. docker push ecmc-ui:r1 devops-docker.pkg.coding.dev.efunds.com.cn/ecmc/docker-dev/ecmc-ui:1.0.0

1.3、提供哪些镜像

  1. 物料库基础服务:ecmc-material-center-service
  2. 公共基础服务:ecmc-common-server
  3. 前端ui服务:ecmc-ui
  4. nacos注册中心服务:ecmc-nacos
  5. 微服务网关服务:ecmc-gateway
  6. Livebos服务:ecmc-livebos

    1.4、每个镜像制作时所需资源

    在制作镜像部分进行描述。

    1.5、微服务部署架构图

    image.png

    2、镜像制作

    在制作每个镜像,需要准备好镜像所需的资源包以及要修改的配置。

    2.1、nacos镜像

    提供nacos安装包下载地址或者linux安装包。

  7. 下载地址

nacos的版本可以按照实际要求来选择。

  1. wget https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.tar.gz
  1. 安装包

下载到本地windows,通过shell工具上传到linux服务器。
此镜像客户已经部署,并提供服务地址:

  1. http://nacos.ecmc.paas.dev.efunds.gz/nacos

nacos作为注册中心和临时的配置中心(后面会换成apollo配置中心),登录nacos控制台创建命名空间和配置。
image.png
将项目的bootstrap.yml或者bootstrap.properties配置文件中的nacos配置修改成已经部署的nacos地址和命名空间、配置列表:
image.png

image.png

2.2、物料库服务镜像

2.2.1、资源准备

项目的bootstrap.yml配置文件的nacos配置已经在上一步nacos镜像中做了修改,还需将appliction-dev.properties(根据情况确定哪个环境的配置文件)配置文件的数据源参数进行修改:
image.png
修改好配置参数之后,双击执行右侧gradle构建工具中物料库服务模块的build命令,生成springboot项目的可执行jar包:
image.png
将jar包上传到linux服务器上,并且新建镜像制作目录,将jar包传输到该目录:
image.png
在jar包的同级目录下新建Dockerfile文件(该文件的后缀为空),内容参考如下:
image.png

  1. #基于基础镜象
  2. FROM devops-docker.pkg.coding.dev.efunds.com.cn/public-artifact-repo/docker-native/openjdk8:8u302-ssl1-ubi7.9-764-x86-202207131000
  3. #指定工作目录
  4. WORKDIR /var/paas
  5. #开放哪个端口
  6. EXPOSE 9090
  7. #将目录下的文件夹复制到容器中
  8. COPY --chown=2000:2000 ./material-center-server-1.0.0-SNAPSHOT.jar ./material-center-server.jar
  9. #将配置文件复制到容器的指定目录中
  10. COPY --chown=2000:2000 ./config ./config
  11. RUN echo -e "#!/bin/sh \n cd /var/paas \n java -jar \${JAVA_OPTS} material-center-server.jar --spring.profiles.active=common --spring.cloud.bootstrap.location=./config/" > var/paas/entrypoint.sh &&chmod +x /var/paas/entrypoint.sh;
  12. #指定用户
  13. USER applog
  14. #配置容器启动后的执行命令"-spring.config.location=./config./
  15. ENTRYPOINT ["tini","--","/var/paas/entrvooint.sh"]

接下来新建config目录,将bootstrap.yml、application.yml、application-dev.yml三个文件复制进去:
image.png

2.2.2、制作镜像

打开xshell进入到Dockerfile层级目录中,执行制作镜像的命令:

  1. docker build -t 【镜像名:标签】

待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像

2.3、公共服务镜像

2.3.1、资源准备

将打包好的jar包上传到服务器上并且解压,
image.png
进入解压后的目录,新建Dockerfile文件,
image.png
Dockerfile文件参考如下:

  1. #基于基础镜像
  2. FROM devops-docker.pkg.coding.dev.efunds.com.cn/public-artifact-repo/docker-native/openjdk8:8u302-ssl1-ubi7.9-764-x86-202207131000
  3. #指定工作目录
  4. WORKDIR /var/paas
  5. #开放哪个端口
  6. EXPOSE 9080
  7. #将目录下的文件夹复制到容器中
  8. COPY --chown=2000:2000 ./common-base-server-1.0.0-SNAPSHOT.jar ./common-base-server.jar
  9. #将配置文件复制到容器的指定目录中
  10. COPY --chown=2000:2000 ./config ./config
  11. RUN echo -e "#!/bin/sh \n cd /var/paas \n java -jar \${JAVA_OPTS} common-base-server.jar --spring.profiles.active=common --spring.cloud.bootstrap.location=./config/" > var/paas/entrypoint.sh &&chmod +x /var/paas/entrypoint.sh;
  12. #指定用户
  13. USER applog
  14. #配置容器启动后的执行命令"-spring.config.location=./config./
  15. ENTRYPOINT ["tini","--","/var/paas/entrvooint.sh"]

修改目录中的config文件夹的bootstrap.yml配置文件,修改两处nacos的配置:
image.png

2.3.2、镜像制作

打开xshell工具,进入到Dockerfile层级目录,执行build命令:

  1. docker build -t 【镜像名:标签】

待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像

2.4、gateway网关服务镜像

2.4.1、资源准备

上传gateway服务的jar包到服务器上,新建Dockerfile文件:
image.png
config目录:
image.png
Dockerfile文件参考内容:

  1. #基干基出镜象
  2. FROM devops-docker.pkg.coding.dev.efunds.com.cn/public-artifact-repo/docker-native/openjdk8:8u302-ssl1-ubi7.9-764-x86-202207131000
  3. #指定工作目录
  4. WORKDIR /var/paas
  5. #开放哪个端口
  6. EXPOSE 8088
  7. #将目录下的文件夹复制到容器中
  8. COPY --chown=2000:2000 ./gateway-client-server-1.0.0-SNAPSHOT.jar ./gateway-client-server.jar
  9. #将配置文件复制到容器的指定目录中
  10. COPY --chown=2000:2000 ./config ./config
  11. RUN echo -e "#!/bin/sh \n cd /var/paas \n java -jar \${JAVA_OPTS} gateway-client-server.jar --spring.profiles.active=common --spring.cloud.bootstrap.location=./config/" > var/paas/entrypoint.sh &&chmod +x /var/paas/entrypoint.sh;
  12. #指定用户
  13. USER applog
  14. #配置容器启动后的执行命令"-spring.config.location=./config./
  15. ENTRYPOINT ["tini","--","/var/paas/entrvooint.sh"]

2.4.2、镜像制作

打开xshell工具,进入到Dockerfile层级目录,执行build命令:

  1. docker build -t 【镜像名:标签】

待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像 教程。

2.5、Livebos服务镜像

livebos服务分为服务端和客户端镜像。
需要登录总部的服务器才能拿到livebos的相关资源包,服务器参数:

  1. 218.66.59.169:21
  2. user
  3. 123321

LiveBOS Phoenix 全量包和LiveBOS Console 应用 war 包、application.yml都需要是最新的版本:
image.png
上传到服务器上。

2.5.1、livebosCore服务端镜像

将LiveBOS_Tomcat_phoenix全量包解压到新建的工作目录(可根据需要将补丁打至最新),并且新建Dockerfile文件:
image.png
需要修改两个地方:

  1. system.properties配置文件:

01.png
2.png

  1. server.xml文件:

3.png

4.png

Dockerfile文件可参考如下:
image.png
打开xshell工具,进入到Dockerfile层级目录,执行build命令:

  1. docker build -t 【镜像名:标签】

待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像 教程。

2.5.1.1、镜像测试存在的问题

jar:file:/war/paas/LiveB0S/LiveBOSCore/WEB- INF/1ib/1 ivebos.plugins.power-6.0.0.jar!/1 ivebos./studio..zip failed.exception:初始化提交 环境失败:0RA-00942:表或视图不存在

待解决!

2.5.2、livebosConsole客户端镜像

将 war 包和 application.yml 文件放在工作目录下,新建 Dockerfile 文件,可参考内容如下:
image.png

application.yml的内容需要修改(实际上没改,镜像测试未报错):
image.png
打开xshell工具,进入到Dockerfile层级目录,执行build命令:

  1. docker build -t 【镜像名:标签】

待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像 教程。

2.6、ecmc-ui前端资源

将前端资源包上传到服务器上,解压c5_basic资源包到工作目录,并且新建Dockerfile文件:
image.png
Dockerfile文件内容参考如下:
image.png
替换掉原先的nginx.conf配置文件:

  1. worker processes
  2. 4;
  3. events
  4. worker connections 1024;
  5. }
  6. http{
  7. upstream gateway {
  8. server 192.168.3.26:8088 weight=1;
  9. keepalive 20;
  10. }
  11. upstream f_livebos{
  12. server 192.168.3.6:8080 weight=1;
  13. keepalive 20;
  14. }
  15. server {
  16. listen 80;
  17. server_name localhost; # 修改为docker服务宿主机的ip
  18. charset utf-8;
  19. sendfile on;
  20. sendfile_max_chunk 1M;
  21. proxy_connect_timeout 600;
  22. proxy_read_timeout 600;
  23. proxy_send_timeout 600;
  24. add_header Access-Control-Allow-Origin *;
  25. add_header Access-Control-Allow-Headers X-Requested-With;
  26. add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
  27. # 代理网关doc.html
  28. location /swagger/ {
  29. proxy_pass http://192.168.3.26:8088/;
  30. proxy_set_header Host $http_host;
  31. proxy_set_header X-Real-IP $remote_addr;
  32. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  33. proxy_http_version 1.1;
  34. proxy_set_header Upgrade $http_upgrade;
  35. proxy_set_header Connection $http_connection;
  36. }
  37. location ~ /livebos {
  38. proxy_pass http://f_livebos;
  39. proxy_set_header Host $http_host;
  40. proxy_set_header X-Real-IP $remote_addr;
  41. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  42. proxy_http_version 1.1;
  43. proxy_set_header Upgrade $http_upgrade;
  44. proxy_set_header Connection $http_connection;
  45. }
  46. # 代理接口/service 开头的url
  47. location ^~ /service {
  48. proxy_pass http://192.168.3.26:8088;
  49. proxy_set_header Host $http_host;
  50. proxy_set_header X-Real-IP $remote_addr;
  51. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  52. proxy_http_version 1.1;
  53. proxy_set_header Upgrade $http_upgrade;
  54. proxy_set_header Connection $http_connection;
  55. }
  56. location /api/ {
  57. proxy_pass http://192.168.3.26:8088/;
  58. proxy_set_header Host $http_host;
  59. proxy_set_header X-Real-IP $remote_addr;
  60. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  61. proxy_http_version 1.1;
  62. proxy_set_header Upgrade $http_upgrade;
  63. proxy_set_header Connection $http_connection;
  64. }
  65. location / {
  66. root /usr/local/etc/front;
  67. index index.html index.htm;
  68. try_files $uri $uri/ /index.html =404;
  69. }
  70. error_page 500 502 503 504 /50x.html;
  71. location = /50x.html {
  72. root html;
  73. }
  74. }
  75. }

这里有个问题:替换的文件貌似必须是nginx名称,如果换成default就会报错读取配置文件错误???

3、可参考教程文档

《营销服务一体化平台》部署文档.docx
livebos phoenix docker下构建与部署20210805.pdf
广发基金数智管家-Nginx、ES-docker部署文档.docx
微服务docker部署文档(1).docx