如果您对IDEA推送docker镜像到私服/利用dockerfile-maven-plugin插件在springboot中上传镜像到远程的docker服务器、远程仓库感兴趣,那么本文将是一篇不错的选择
如果您对IDEA 推送 docker 镜像到私服 / 利用 dockerfile-maven-plugin 插件在 springboot 中上传镜像到远程的 docker 服务器、远程仓库感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于IDEA 推送 docker 镜像到私服 / 利用 dockerfile-maven-plugin 插件在 springboot 中上传镜像到远程的 docker 服务器、远程仓库的详细内容,并且为您提供关于docker - dockerfile构建一个简单的springboot应用镜像、Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像、docker 上传镜像到harbor仓库、Docker 将镜像推送到远程仓库的有价值信息。
本文目录一览:- IDEA 推送 docker 镜像到私服 / 利用 dockerfile-maven-plugin 插件在 springboot 中上传镜像到远程的 docker 服务器、远程仓库
- docker - dockerfile构建一个简单的springboot应用镜像
- Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像
- docker 上传镜像到harbor仓库
- Docker 将镜像推送到远程仓库
IDEA 推送 docker 镜像到私服 / 利用 dockerfile-maven-plugin 插件在 springboot 中上传镜像到远程的 docker 服务器、远程仓库
利用 dockerfile-maven-plugin 插件在 springboot 中上传镜像到远程仓库
这篇文章讲解在开发工具中把打包好的 jar 编译成 docker 镜像,上传到远程的 docker 服务器,以及根据镜像创建测试 docker 容器,验证 springboot 程序,以及 Dockerfile 配置
如何生成证书以及 docker 服务器开启远程端口,参考这篇文章:https://www.cnblogs.com/morgan363/p/12029783.html
1、Windows 下配置环境变量
增加三个系统环境变量,在环境变量 -> 系统变量 -> 新建
DOCKER_HOST=tcp://192.168.74.82:2376
DOCKER_CERT_PATH = 证书路径
DOCKER_TLS_VERIFY=1
备注:
1)证书路径目录下面有三个证书文件 ca.pem、cert.pem、key.pem
2)DOCKER_HOST中的ip是docker服务器的ip
2、springboot 项目使用 dockerfile-maven-plugin 插件
pom.xml 文件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.3</version>
<!--<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>-->
<configuration>
<repository>121.42.162.203/${project.artifactId}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
<JAR_EXPOSE>8082</JAR_EXPOSE>
</buildArgs>
</configuration>
</plugin>
注:repository 属性里的 ip 要修改成自己的 docker 服务器 ip
springboot 项目的根目录新建 Dockerfile 文件,复制下面的代码
FROM openjdk:8-jre
ARG JAR_EXPOSE=8082
EXPOSE $JAR_EXPOSE
ARG JAR_FILE
ADD $JAR_FILE /app.jar
ENTRYPOINT ["java", "-jar", "-Duser.timezone=GMT+08", "/app.jar"]
3、执行 maven 命令上传镜像
mvn clean package dockerfile:build -Dmaven.test.skip=true
4、maven 命令成功执行后可以在 docker 服务器看到镜像 docker images
5、docker run 这个 springboot 编译的 docker 镜像
docker run --name countgame -d -p 8082:8082 6f0d
注:后面的 6f0d 是 image_id,在 docker images 的后面可以看到
6、docker ps 可以看到容器已经启动
7、查看容器启动日志,日志正常
docker logs --tail 300 -f countgame
8、用 curl 测试程序是否正常,可以看到有内容返回,返回的网页正常
curl http://127.0.0.1:8082/countgame/user/toGame
注:
1. 修改了系统变量需要重启开发工具才能生效,一开始提示上传镜像失败,看了错误是上传的 ip 还是默认的 127.0.0.1,重启 IDEA 或者 eclipse 就可以了
摘自:https://blog.csdn.net/qq_21187515/article/details/90302026
docker - dockerfile构建一个简单的springboot应用镜像
在前面的 《docker - 构建一个简单的docker镜像》中,介绍了两种构建镜像的方法,其中,通过dockerfile文件构建镜像是在实际生产中常用的;除此之外,还通过 docker - Dockerfile常用指令 和 docker - 常用命令 两篇文章介绍了dockerfile的指令和docker的常用命令,接下来,我们将会使用所学的知识构建一个简单的springboot应用。
该springboot应用对外暴露了一个api,对外暴露8080端口,日志文件写在应用当前目录,部分代码以及配置文件如下:
@Slf4j
@SpringBootApplication
@RestController
public class SpringbootDockerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDockerApplication.class, args);
}
@RequestMapping("/docker")
public String docker() {
log.info("access docker home at " + LocalTime.now());
return "Hello Docker!";
}
}
application.properties
spring.application.name=springboot-docker
server.port=8080
logging.file=app.log
把jar和dockerfile文件上传到一个springboot-docker目录中
[root@localhost springboot-docker]# ls
Dockerfile springboot-docker-1.0.jar
Dockerfile:
FROM openjdk:8u181-jdk-alpine
ARG workdir=/app
VOLUME ${workdir}
WORKDIR ${workdir}
ADD springboot-docker-1.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
- FROM openjdk:8u181-jdk-alpine : 从docker仓库中获取基础镜像
- ARG workdir=/app : 添加变量,该变量只在当前的dockerfile中有效,如果换成ENV,则在容器中生效。这里需要注意的是,ARG和ENV对哪些指令是起效的,可以参考 docker - Dockerfile常用指令
- VOLUME ${workdir} : 把宿主机的目录(该目录可以通过docker inspect dockerName查看)挂载到容器中的/app这个目录,这样可以在宿主机中查看该目录的内容。还有一个很重要的原因,就是数据持久化,如果不挂载,当容器关闭删除后,数据将会跟着被删除。这里因为/app是应用所在的目录,该目录会产生日志等其它内容。
- WORKDIR ${workdir} :指定工作目录,下面的指令操作将在这个指定目录中执行。还有一点是,当通过交互模式的exec命令进入到该容器时,默认当前路径是/app
- ADD springboot-docker-1.0.jar app.jar : 添加文件到WORKDIR
- EXPOSE 8080 : 暴露8080端口,需要通过容器IP和端口访问应用。如果想通过宿主机的IP和端口访问应用,需要在RUN容器的时候绑定。可以参考docker - Dockerfile常用指令 的run命令
- ENTRYPOINT: 运行容器后执行的第一条命令,这里通过java -jar命令运行应用。
接下通过BUILD命令构建镜像
[root@localhost springboot-docker]# docker build -t springboot-docker:1.0 .
Sending build context to Docker daemon 17.85MB
Step 1/7 : FROM openjdk:8u181-jdk-alpine
---> 97bc1352afde
Step 2/7 : ARG workdir=/app
---> Using cache
---> a3818e8696c2
Step 3/7 : VOLUME ${workdir}
---> Using cache
---> e2faefe34aa6
Step 4/7 : WORKDIR ${workdir}
---> Using cache
---> 144b537c1b57
Step 5/7 : ADD springboot-docker-1.0.jar app.jar
---> Using cache
---> daca849e1012
Step 6/7 : EXPOSE 8080
---> Using cache
---> 123da0847dd3
Step 7/7 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
---> Using cache
---> de46a3f96d91
Successfully built de46a3f96d91
Successfully tagged springboot-docker:1.0
查看当前本地仓库的镜像,已经构建springboot-docker:1.0镜像
[root@localhost springboot-docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot-docker 1.0 de46a3f96d91 38 minutes ago 121MB
openjdk 8u181-jdk-alpine 97bc1352afde 5 weeks ago 103MB
运行镜像
docker run -p 8080:8080 -d --name springboot-docker springboot-docker:1.0
通过-p参数,把容器中的8080端口映射到宿主机中的8080端口。--name,给容器起一个名字
可以查看springboot应用的启动情况
docker logs -f springboot-docker
查看容器的运行情况
docker inspect springboot-docker
只看一些关键的信息
"Mounts": [
{
"Type": "volume",
"Name": "90df5c82f11290eddfc86faead12e4a79649672845b2a816e04f868da76851a3",
"Source": "/var/lib/docker/volumes/90df5c82f11290eddfc86faead12e4a79649672845b2a816e04f868da76851a3/_data",
"Destination": "/app",
"Driver": "local",
}
],
"Networks": {
"bridge": {
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
}
}
宿主机中的 /var/lib/docker/volumes/90df5c82f11290eddfc86faead12e4a79649672845b2a816e04f868da76851a3/_data 目录挂载到 容器的 /app目录
容器的IP地址 172.17.0.2
运行成功后,在宿主机中通过命令访问服务
curl 172.17.0.2:8080/docker
也可以通过宿主机的IP或者localhost访问,因为已经绑定
curl 127.0.0.1:8080/docker
Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像
创建Dockerfile文件
此处的参数说明:
FROM openjdk:8-jdk-alpine 基与jdk1.8
VOLUME /tmp 挂载容器的位置, 容易找到
ADD kitty-generator-1.0.0.jar app.jar 宿主机器的jar文件 移动到 容器的jar文件
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 容器执行的命令
EXPOSE 9000 简易爆漏的端口 下面docker run -p 还是要的, 因为容器是桥接模式
EXPOSE 9092 写多个就会暴露多个端口
若要执行调优内存:加参数如下
2:POM.xml配置 加入docker:build插件
<artifactId>kitty-generator</artifactId> 此处和下面${project.artifactId} 对应
<version>${project.version}</version>
<packaging>jar</packaging> 此处改为jar包方式
<properties>
*****
<docker.image.prefix>kitty</docker.image.prefix> 此处和下面${docker.image.prefix} 对应
</properties>
#下面为jar方式.
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
在父模块打包
mvn clean install package -Dmaven.test.skip
在子模块执行生成镜像
mvn docker:build -Dmaven.test.skip
启动镜像
docker run -itd -p 9000:9000 -v /data/generator/:/data kitty/kitty-generator
-it 可以交互进入容器
-d 后台运行
-p 端口映射,若项目有多个端口, -p 9000:9000 -p 9092:9092 写多个即可
-v 挂载文件 宿主/data/generator/ 不存在会自动创建 容器/data会自动创建
挂载文件配置
* 注意下方/data/ 红色字体
-v /data/generator/:/data 这的/data 表示容器的日志 将会在宿主机器生成/data/generator/kitty-generator.log文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志输出 -->
<appender name="baselog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>/data/kitty-generator.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/base.%d.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100 MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<!-- 日志级别 -->
<root>
<!-- 定义了ERROR和INFO级别的日志;分别在FILE文件和控制台输出 -->
<level value="INFO" />
<appender-ref ref="baselog" />
<appender-ref ref="console" />
</root>
<logger name="com.louis.kitty.generator" level="INFO">
<appender-ref ref="baselog" />
</logger>
</configuration>
docker 上传镜像到harbor仓库
先登录到仓库
查看镜像ID 、tag
打tag 然后上传
命令解析
docker tag centos:7 192.168.31.128/test/centos7
docker命令
tag 打tag
centos:7 镜像名字和Tag版本
192.168.31.128 harbor仓库位置
test 仓库的项目名字
centos7 为存储在仓库中的名字
docker push 192.168.31.128/test/centos7
Docker 将镜像推送到远程仓库
注册登录:https://registry.hub.docker.com/
# 登录
docker login -u wu
Password:******
# 给镜像打标签
docker tag image_id wu/mydocker:1.0
# 推送到远程仓库
docker push wu/mydocker:1.0
我们今天的关于IDEA 推送 docker 镜像到私服 / 利用 dockerfile-maven-plugin 插件在 springboot 中上传镜像到远程的 docker 服务器、远程仓库的分享已经告一段落,感谢您的关注,如果您想了解更多关于docker - dockerfile构建一个简单的springboot应用镜像、Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像、docker 上传镜像到harbor仓库、Docker 将镜像推送到远程仓库的相关信息,请在本站查询。
本文标签: