前言
上篇讲到了SpringBoot做成镜像,但是操作很麻烦,需要手动拖到Linux并且需要执行更多的操作。本文描述了远程包装过程。
打包SpringBoot项目
pom.xml内容
<!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <!-- docker私服的地址 --> <dockerHost>http://192.168.112.135:2375</dockerHost> <!--镜像名和版本号--> <imageName>office:1.0.0</imageName> <!-- 如果需要重复构建相同
标签名称的镜像,可以 forceTags 设置为 true --> <forceTags>true</forceTags> <!--Dockerfile的位置 --> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.artifactId}.jar</include> </resource> </resources> </configuration> </plugin> <!-- Docker maven plugin -->
创建Dockerfile
DockerFile 内容
# 使用基本镜像java FROM java:8 # 作者 MAINTAINER terry # VOLUME 指定了临时文件目录为/tmp。 # 主机有效果 /var/lib/docker 临时文件创建在目录下,并链接到容器/tmp VOLUME /tmp # 添加jar包到容器并重命名 ADD tools-office.jar office.jar # 运行jar包 RUN bash -c 'touch /office.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/office.jar"] # ENV JAVA_OPTS="-Xms512m -Xmx512m" # -Djava.security.egd=file:/dev/./urandom 加速tomcat启动 # ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=prod -jar /demo.jar"] #暴露8080端口 EXPOSE 8080
打包
使用Idea maven工具,找到package选项打包。
包装成功后会再次target目录生成jar包
制作成Docker镜像
开放docker私服端口供外部访问
-
编辑docker.service文件
vim /usr/lib/systemd/system/docker.service
-
在ExecStart附加配置(开放2375端口容易被黑客攻击,一般设置在内网)
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
-
重启docker
systemctl daemon-reload service docker restart
使用maven docker插件找到docker:build选项
先做改操作Docker镜像,上传到私服。
上传成功后
docker查看镜像
运行镜像
docker run -d --name tools -p 8080:8080 -t tools:1.0.0
查看容器运行日志
docker logs -f -t --tail 50 tools