阿里巴巴网站运营怎么做,淘宝客网站域名备案吗,WordPress采集更新文章,百度网盘登录入口网页版文章目录 前言一、服务器端1.1 离线安装docker1.2 开启docker远程访问1.3 制作对应jdk镜像1.3.1 下载jdk171.3.2 Dockerfile 制作jdk17镜像1.3.3 镜像导出1.3.4 服务器引入镜像 二、Idea 配置2.1 Dockerfile2.2 pom 引入docker插件2.3 idea docker插件配置2.4 打包镜像上传2.5 … 文章目录 前言一、服务器端1.1 离线安装docker1.2 开启docker远程访问1.3 制作对应jdk镜像1.3.1 下载jdk171.3.2 Dockerfile 制作jdk17镜像1.3.3 镜像导出1.3.4 服务器引入镜像 二、Idea 配置2.1 Dockerfile2.2 pom 引入docker插件2.3 idea docker插件配置2.4 打包镜像上传2.5 docker启动服务容器 总结1. Dockerfile 制作jdk17镜像测试问题2. 镜像从vm导入内网服务器后image REPOSITORY和TAG都是none3. 目前的问题打包的镜像太大4. jdk17的基础镜像不能在宿主机安装jdk代替宿主机和docker容器是隔离的5. nacos 数据库等中间件可以在宿主机或内网其他服务器部署可以用部署到容器内仍然可以访问到 后续 前言
基于内网环境搭建
一、服务器端
1.1 离线安装docker
参考第十一章 docker swarm集群部署 第一节
1.2 开启docker远程访问
修改vi /etc/systemd/system/docker.service ExecStart 修改如下
ExecStart/usr/bin/dockerd --bip172.20.1.0/16 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock重新加载配置systemctl daemon-reload 重启 Dockerservice docker restart
1.3 制作对应jdk镜像
由于服务器无法访问外网我们的应用又依赖于jdk17那么需要制作一个jdk17的基础镜像。
1.3.1 下载jdk17
https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
1.3.2 Dockerfile 制作jdk17镜像
本地启动vm远程虚拟机。/home下导入上一步下载的jdk17的包并创建Dockerfile文件内容如下
FROM docker.io/ansible/centos7-ansible
#JDK_FILE 本地包名称
ENV JDK_FILEjdk-17_linux-x64_bin.tar.gz
#jdk目录
ENV JAVA_DIR/usr/local/java
RUN mkdir -p $JAVA_DIR
# 配置jdk
COPY ./$JDK_FILE $JAVA_DIR
# RUN 构建镜像时需要运行的Linux命令、CMD #指定容器启动时要运行的命令
RUN tar -zxvf $JAVA_DIR/$JDK_FILE -C $JAVA_DIR rm -rf $JAVA_DIR/$JDK_FILE
# 设置环境变量
ENV JAVA_HOME$JAVA_DIR/jdk-17.0.10
ENV CLASSPATH.:$JAVA_HOME/lib:$CLASSPATH
ENV PATH$PATH:$JAVA_HOME/bin
#RUN source /etc/profile java -version
CMD [/bin/bash,-c,source /etc/profile,java,-version]注意修改JDK_FILE为你的jdk文件名 构建镜像
cd /home
#最后的. 表示从当前目录查找Dockerfile
docker build -t cuzue-jdk:17 .本地运行
docker run --rm cuzue-jdk:17 java --version1.3.3 镜像导出
vm服务器上导出jdk17镜像到当前目录
docker save 【镜像id】 -o jdk17.tar1.3.4 服务器引入镜像
在内网服务器引入镜像
上一步导出的镜像下载后上传到内网服务器docker load -i jdk17.tardocker images 测试 docker run --rm cuzue-jdk:17 java --version
二、Idea 配置
2.1 Dockerfile
idea 项目创建Dockerfile文件放到项目根目录pom.xml同级别内容如下
FROM cuzue-jdk:17
#MAINTAINER cuzue 991446772qq.com
VOLUME /tmp
COPY target/*.jar file.jar
ENV SERVER_PORT8196 XMS1024m XMX1024m NACOS_CONFIG_ADDRnacos.server:8848 NACOS_CONFIG_SPAcuzue NACOS_DISCOVERY_ADDRnacos.server:8848 NACOS_DISCOVERY_SPAcuzue MAIN_CLASScom.cuzue.file.FileServerApplication
ENTRYPOINT java -server -Xms$XMS -Xmx$XMX -Dserver.port$SERVER_PORT -Dloader.pathlib -Duser.timezoneAsia/Shanghai -Dspring.profiles.activedev -Dspring.cloud.nacos.config.server-addr$NACOS_CONFIG_ADDR -Dspring.cloud.nacos.config.namespace$NACOS_CONFIG_SPA -Dspring.cloud.nacos.discovery.server-addr$NACOS_DISCOVERY_ADDR -Dspring.cloud.nacos.discovery.namespace$NACOS_DISCOVERY_SPA -jar file.jar $MAIN_CLASSDockerfile 的存放位置可调整需要和pom内的配置对应即可
2.2 pom 引入docker插件
plugingroupIdcom.spotify/groupIdartifactIddocker-maven-plugin/artifactIdversion1.2.2/version!--将插件绑定在某个phase执行--executionsexecutionidbuild-image/id!--将插件绑定在package这个phase上。也就是说用户只需执行mvn package 就会自动执行mvn docker:build--phasepackage/phasegoalsgoalbuild/goal/goals/execution/executionsconfiguration!--指定生成的镜像名,这里是我们的项目名--imageName${project.artifactId}/imageName!--指定标签 这里指定的是镜像的版本我们默认版本是latest--imageTagsimageTaglatest/imageTag/imageTags!-- 指定我们项目中Dockerfile文件的路径--dockerDirectory${project.basedir}/dockerDirectory!--指定远程docker 地址--dockerHosthttp://你的服务器ip:2375/dockerHost!-- 这里是复制 jar 包到 docker 容器指定目录配置 --resourcesresourcetargetPath//targetPath!--jar包所在的路径 此处配置的即对应项目中target目录--directory${project.build.directory}/directory!-- 需要包含的 jar包 这里对应的是 Dockerfile中添加的文件名 --include${project.build.finalName}.jar/include/resource/resources/configuration
/plugin2.3 idea docker插件配置 2.4 打包镜像上传
package时会自动打包镜像上传到服务器的docker中打包成功后可在服务器查看image是否存在
maven clean package2.5 docker启动服务容器
打包好镜像后idea的docker组件可以看到对应镜像右键创建容器 编辑容器名称和端口映射run起来就ok了。
总结
1. Dockerfile 制作jdk17镜像测试问题
测试时启动镜像发现docker ps 看不到对应的启动容器不必理会。
2. 镜像从vm导入内网服务器后image REPOSITORY和TAG都是none
docker tag image_id repository:tag
docker tag image_id cuzue-jdk:173. 目前的问题打包的镜像太大
jar包88M 打包镜像1G主要是因为包含了基础镜像jdk17 解决参考https://zhuanlan.zhihu.com/p/632319956目前还未实践 当前状态镜像包大打包上传过程慢idea docker 鸡肋如果能优化速度还是不错的
4. jdk17的基础镜像不能在宿主机安装jdk代替宿主机和docker容器是隔离的
5. nacos 数据库等中间件可以在宿主机或内网其他服务器部署可以用部署到容器内仍然可以访问到
后续
找到一个精简的jdk镜像 123MB审核后补充