gradle build docker image

简介: 前言:其实gradle-docker插件干的事和我们手动制作镜像是一样的,只不过它封装了一些步骤而已、eg:如果我们要将项目打包成镜像,首先我们要写Dockerfile,这是制作镜像的不可或缺的第一步,一般我们的Dockerfile如下:FROM tomcatMAINTAINER liuzj 775967211@qq.

前言:其实gradle-docker插件干的事和我们手动制作镜像是一样的,只不过它封装了一些步骤而已、

eg:如果我们要将项目打包成镜像,首先我们要写Dockerfile,这是制作镜像的不可或缺的第一步,一般我们的Dockerfile如下:

FROM tomcat
MAINTAINER liuzj 775967211@qq.com
COPY **.war /usr/local/tomcat/webapps

因为我们的web项目是基于tomcat的所以基础镜像为tomcat,然后就是将我们的war包拷贝到tomcat下面去,然后执行docker build -t *** dir就可以制作成镜像。了解了这个之后再看

下面的gradle是如何做的↓

 

1.引入gradle docker插件并写好gradle任务

buildscript {
repositories {   jcenter() mavenCentral() }
dependencies { classpath('org.springframework.boot:spring-boot-gradle-plugin:1.5.4.RELEASE') classpath('se.transmode.gradle:gradle-docker:1.2') } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'war' apply plugin: 'org.springframework.boot' apply plugin: 'docker'
// 镜像名字将会是 group + baseName; 镜像tag为 version group = 'springio' jar { baseName = 'gs-spring-boot-docker' version = '0.1.0' }
// 回顾我们手动制作镜像,我们首先要得到一个war包,所以我们得依赖build task buildDocker(type: Docker, dependsOn: build) { push = false applicationName = jar.baseName dockerfile = file('Dockerfile')
 // 以下步骤可以不要,因为我们项目默认打完的war包会在固定目录下,而无需再去拷贝到build/docker目录下去,其中build/docker目录是自动会创建的 doFirst { copy { from war into "build/docker/target" } } } repositories { mavenCentral() }
sourceCompatibility = 1.8 targetCompatibility = 1.8
dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile("org.springframework.boot:spring-boot-starter-test") providedRuntime("org.springframework.boot:spring-boot-starter-tomcat") }

 

2.创建Dockerfile文件

FROM java
# SpringBoot内嵌的tomcat默认使用/temp作为工作目录 VOLUME /tmp

 

3.执行gradle buildDocker即可生成镜像

 

补充如下几个问题:

错误:如下错误是因为国内下载Docker镜像缓慢导致,需要配置一下Docker Hub加速器(DaoCloud是国内第一家Docker Hub加速器)

Error response from daemon: Get https://registry-1.docker.io/v2/openstf/stf/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Aopenstf%2Fstf%3Apull&service=registry.docker.io: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

配置如下:

在Docker setting -> Docker Daemon -> Registry Mirrors 中添加http://bcb5bdc3.m.daocloud.io

 

参考资料:

https://www.cnblogs.com/YatHo/p/7100609.html

https://yq.aliyun.com/articles/47348

https://github.com/ma-de/spring-boot-war-docker/blob/master/Dockerfile

 

以上仅个人总结,如有不对或补充希望能指点一二,3Q!

目录
相关文章
|
Linux Docker 容器
「Docker」M1 Pro 打包docker image问题合集
「Docker」M1 Pro 打包docker image问题合集
163 0
|
Linux Docker Windows
docker pull 报错解决:error pulling image configuration: Get https:..
docker pull 报错解决:error pulling image configuration: Get https:..
3997 0
|
2月前
|
网络虚拟化 Docker 容器
docker Desktop报错 error pulling image configuration 处理
docker Desktop报错 error pulling image configuration 处理
45 0
|
3月前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
|
4月前
|
Android开发 Docker 容器
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
848 1
|
4月前
|
Android开发
[ionic]解决Could not read build file capacitor/build.gradle as it does notexist.
[ionic]解决Could not read build file capacitor/build.gradle as it does notexist.
41 1
|
5月前
|
JSON Ubuntu 持续交付
用skopeo检查docker image
通过Skopeo,您可以方便地获取Docker镜像的详细信息和元数据,而不需要拉取或安装整个镜像。这对于那些有成百上千镜像的大型系统是非常实用的,因为它有助于快速查看和分析镜像的特定属性。Skopeo是一个专业的工具,用于在持续集成和部署的过程中实现高效的镜像管理,既减轻了对Docker守护进程的依赖,也为容器化环境中镜像的控制提供了灵活性。
69 3
|
7月前
|
Docker 容器
docker build -t和docker build -f区别
参数用于指定要使用的Dockerfile的路径,允许你在不同的位置使用不同的Dockerfile来构建镜像。
117 0
|
7月前
|
缓存 Docker 容器
Docker build 命令详解
Docker build 命令详解
96 0
|
容器
竟有人因为docker-compose build参数搞垮了1星期
事情是这样的。 我从上星期开始,修改项目的源代码,然而提交了多次,容器代码并没有改变 后来在一遍文章上发现,还是要重新build,本以为找到了救星了。 奈何发现执行docker-compose build,容器并没有重写,明明我是写了的,为什么会这样呢?
120 0