1、环境准备
- 镜像推送到哪个远程仓库?
- 如何推送镜像?
- 需要提供哪些镜像?
- 每个镜像都需要哪些资源?
- 每个镜像制作时需要提供哪些环境参数?
-
1.1、远程镜像仓库
服务器地址、账号、密码:
10.97.38.156ecmcecmc
远程仓库地址:
devops-docker.pkg.coding.dev.efunds.com.cn/ecmc/docker-dev/1.2、推送镜像
在Dockerfile所在的目录执行 docker build -t 【镜像名】:【标签】 . 命令(别忘了最后面的 .),本地制作好镜像,docker images 查看镜像是否已在本地库:

- 登录远程仓库
在当前目录键入登录命令:
docker login -u gdd-huanglm devops-docker.pkg.coding.dev.efunds.com.cn#密码Huanglm0801(开发机密码)
提示登录成功,再进行后面的操作。
- 给本地镜像打标签
这里打镜像的目的是给你要推送的目标镜像在远程仓库一个标签。如图远程仓库:
打标签的命令:
docker tag 【镜像名称:标签】 【镜像名称:标签】#举例docker tag ecmc-ui:r1 devops-docker.pkg.coding.dev.efunds.com.cn/ecmc/docker-dev/ecmc-ui:1.0.0
可再次执行 docker images 查看镜像,仓库中是否存在新标签的镜像。
- 推送镜像
推送镜像的命令:
docker push 【镜像名:标签】#举例docker push ecmc-ui:r1 devops-docker.pkg.coding.dev.efunds.com.cn/ecmc/docker-dev/ecmc-ui:1.0.0
1.3、提供哪些镜像
- 物料库基础服务:ecmc-material-center-service
- 公共基础服务:ecmc-common-server
- 前端ui服务:ecmc-ui
- nacos注册中心服务:ecmc-nacos
- 微服务网关服务:ecmc-gateway
-
1.4、每个镜像制作时所需资源
1.5、微服务部署架构图
2、镜像制作
在制作每个镜像,需要准备好镜像所需的资源包以及要修改的配置。
2.1、nacos镜像
提供nacos安装包下载地址或者linux安装包。
下载地址
nacos的版本可以按照实际要求来选择。
wget https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.tar.gz
- 安装包
下载到本地windows,通过shell工具上传到linux服务器。
此镜像客户已经部署,并提供服务地址:
http://nacos.ecmc.paas.dev.efunds.gz/nacos
nacos作为注册中心和临时的配置中心(后面会换成apollo配置中心),登录nacos控制台创建命名空间和配置。
将项目的bootstrap.yml或者bootstrap.properties配置文件中的nacos配置修改成已经部署的nacos地址和命名空间、配置列表:
2.2、物料库服务镜像
2.2.1、资源准备
项目的bootstrap.yml配置文件的nacos配置已经在上一步nacos镜像中做了修改,还需将appliction-dev.properties(根据情况确定哪个环境的配置文件)配置文件的数据源参数进行修改:
修改好配置参数之后,双击执行右侧gradle构建工具中物料库服务模块的build命令,生成springboot项目的可执行jar包:
将jar包上传到linux服务器上,并且新建镜像制作目录,将jar包传输到该目录:
在jar包的同级目录下新建Dockerfile文件(该文件的后缀为空),内容参考如下:
#基于基础镜象FROM devops-docker.pkg.coding.dev.efunds.com.cn/public-artifact-repo/docker-native/openjdk8:8u302-ssl1-ubi7.9-764-x86-202207131000#指定工作目录WORKDIR /var/paas#开放哪个端口EXPOSE 9090#将目录下的文件夹复制到容器中COPY --chown=2000:2000 ./material-center-server-1.0.0-SNAPSHOT.jar ./material-center-server.jar#将配置文件复制到容器的指定目录中COPY --chown=2000:2000 ./config ./configRUN 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;#指定用户USER applog#配置容器启动后的执行命令"-spring.config.location=./config./ENTRYPOINT ["tini","--","/var/paas/entrvooint.sh"]
接下来新建config目录,将bootstrap.yml、application.yml、application-dev.yml三个文件复制进去:
2.2.2、制作镜像
打开xshell进入到Dockerfile层级目录中,执行制作镜像的命令:
docker build -t 【镜像名:标签】
待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像
2.3、公共服务镜像
2.3.1、资源准备
将打包好的jar包上传到服务器上并且解压,
进入解压后的目录,新建Dockerfile文件,
Dockerfile文件参考如下:
#基于基础镜像FROM devops-docker.pkg.coding.dev.efunds.com.cn/public-artifact-repo/docker-native/openjdk8:8u302-ssl1-ubi7.9-764-x86-202207131000#指定工作目录WORKDIR /var/paas#开放哪个端口EXPOSE 9080#将目录下的文件夹复制到容器中COPY --chown=2000:2000 ./common-base-server-1.0.0-SNAPSHOT.jar ./common-base-server.jar#将配置文件复制到容器的指定目录中COPY --chown=2000:2000 ./config ./configRUN 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;#指定用户USER applog#配置容器启动后的执行命令"-spring.config.location=./config./ENTRYPOINT ["tini","--","/var/paas/entrvooint.sh"]
修改目录中的config文件夹的bootstrap.yml配置文件,修改两处nacos的配置:
2.3.2、镜像制作
打开xshell工具,进入到Dockerfile层级目录,执行build命令:
docker build -t 【镜像名:标签】
待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像
2.4、gateway网关服务镜像
2.4.1、资源准备
上传gateway服务的jar包到服务器上,新建Dockerfile文件:
config目录:
Dockerfile文件参考内容:
#基干基出镜象FROM devops-docker.pkg.coding.dev.efunds.com.cn/public-artifact-repo/docker-native/openjdk8:8u302-ssl1-ubi7.9-764-x86-202207131000#指定工作目录WORKDIR /var/paas#开放哪个端口EXPOSE 8088#将目录下的文件夹复制到容器中COPY --chown=2000:2000 ./gateway-client-server-1.0.0-SNAPSHOT.jar ./gateway-client-server.jar#将配置文件复制到容器的指定目录中COPY --chown=2000:2000 ./config ./configRUN 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;#指定用户USER applog#配置容器启动后的执行命令"-spring.config.location=./config./ENTRYPOINT ["tini","--","/var/paas/entrvooint.sh"]
2.4.2、镜像制作
打开xshell工具,进入到Dockerfile层级目录,执行build命令:
docker build -t 【镜像名:标签】
待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像 教程。
2.5、Livebos服务镜像
livebos服务分为服务端和客户端镜像。
需要登录总部的服务器才能拿到livebos的相关资源包,服务器参数:
218.66.59.169:21user123321
LiveBOS Phoenix 全量包和LiveBOS Console 应用 war 包、application.yml都需要是最新的版本:
上传到服务器上。
2.5.1、livebosCore服务端镜像
将LiveBOS_Tomcat_phoenix全量包解压到新建的工作目录(可根据需要将补丁打至最新),并且新建Dockerfile文件:
需要修改两个地方:
- system.properties配置文件:


- server.xml文件:


Dockerfile文件可参考如下:
打开xshell工具,进入到Dockerfile层级目录,执行build命令:
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 文件,可参考内容如下:
application.yml的内容需要修改(实际上没改,镜像测试未报错):
打开xshell工具,进入到Dockerfile层级目录,执行build命令:
docker build -t 【镜像名:标签】
待完成镜像打包后,执行docker images 查看仓库内镜像,制作成功,推送镜像到远程仓库即可。
推送过程参照 1.2节-推送镜像 教程。
2.6、ecmc-ui前端资源
将前端资源包上传到服务器上,解压c5_basic资源包到工作目录,并且新建Dockerfile文件:
Dockerfile文件内容参考如下:
替换掉原先的nginx.conf配置文件:
worker processes4;eventsworker connections 1024;}http{upstream gateway {server 192.168.3.26:8088 weight=1;keepalive 20;}upstream f_livebos{server 192.168.3.6:8080 weight=1;keepalive 20;}server {listen 80;server_name localhost; # 修改为docker服务宿主机的ipcharset utf-8;sendfile on;sendfile_max_chunk 1M;proxy_connect_timeout 600;proxy_read_timeout 600;proxy_send_timeout 600;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requested-With;add_header Access-Control-Allow-Methods GET,POST,OPTIONS;# 代理网关doc.htmllocation /swagger/ {proxy_pass http://192.168.3.26:8088/;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $http_connection;}location ~ /livebos {proxy_pass http://f_livebos;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $http_connection;}# 代理接口/service 开头的urllocation ^~ /service {proxy_pass http://192.168.3.26:8088;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $http_connection;}location /api/ {proxy_pass http://192.168.3.26:8088/;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $http_connection;}location / {root /usr/local/etc/front;index index.html index.htm;try_files $uri $uri/ /index.html =404;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
这里有个问题:替换的文件貌似必须是nginx名称,如果换成default就会报错读取配置文件错误???
3、可参考教程文档
《营销服务一体化平台》部署文档.docx
livebos phoenix docker下构建与部署20210805.pdf
广发基金数智管家-Nginx、ES-docker部署文档.docx
微服务docker部署文档(1).docx
