Tag: gradle docker

如何在拥有专用dockerregistry服务器的情况下使用docker与gradle

我正在设置https://spring.io/guides/gs/spring-boot-docker/#initial与我的环境,它有一个私人registry服务器@ el-qa-docker.xxx:18445 我的build.gradle有以下相关的内容: dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.3.RELEASE") classpath('se.transmode.gradle:gradle-docker:1.2') classpath ('org.codehaus.groovy:groovy-backports-compat23:2.3.5') } group = 'james' apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'org.springframework.boot' apply plugin: 'docker' task buildDocker(type: Docker, dependsOn: build) { push = true applicationName = jar.baseName dockerfile = file('src/main/docker/Dockerfile') doFirst { copy { from jar into stageDir } } } 当我运行: […]

下载只有build.gradle文件的依赖关系

是否有可能只使用build.gradle文件下载gradle依赖关系? 我想要完成的是以下内容: 我有一套unit testing,我想执行它们(作为CI过程的一部分)在docker集装箱内。 最初,我使用来自docker hub的openjdk:8-jdk镜像作为testing的基础镜像。 所以,docker撰写文件包含以下内容: version: '3.2' services: unit: image: openjdk:8-jdk volumes: – ..:/usr/test working_dir: /usr/test command: sh -c "exec ./gradlew junitPlatformTest -Punit -p moduleA/" 整个项目安装在容器内的/usr/test目录下。 当容器启动时,它会针对moduleA执行junitPlatformTest任务。 openjdk:8-jdk映像的问题在于,每次运行unit服务时都会下载gradle及其依赖关系。 为了解决这个问题,我决定创build一个新的图像,这个图像会有gradle和我已经下载的项目依赖项。 Dockerfile如下: FROM openjdk:8-jdk COPY . /usr/test WORKDIR /usr/test RUN apt-get -y install wget unzip RUN wget https://services.gradle.org/distributions/gradle-4.1-bin.zip RUN mkdir /opt/gradle RUN unzip -d /opt/gradle […]

尤里卡服务器不能用于传统的战争部署在Docker中

尤里卡启动gradle项目在这里 。 当我运行bootRun ,工作正常,尤里卡绑定到本地主机上的端口8080,可以从浏览器访问,大家都很开心。 当作为Docker容器启动时,应用程序似乎没有任何exception,但我无法从8080端口的浏览器访问Eureka控制台。我得到了404。 我知道在Docker上有几个Eureka的例子,但是没有一个使用gradle和传统的部署。 命令我用来启动一个容器: docker run -it -p 8080:8080 -e DOCKER_HOST="$(echo $DOCKER_HOST | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')" xxx Docker引擎1.9与Mac上的Docker机器。 日志片段 : Adding replica node: http://192.168.99.107:8080/eureka/ 2015-12-26 03:35:42.959 INFO 7 — [ost-startStop-1] najavaee.discovery.DiscoveryServer : Started DiscoveryServer in 8.167 seconds (JVM running for 12.804) application.yml : server: port: ${PORT:8080} eureka: instance: hostname: ${DOCKER_HOST:localhost} preferIpAddress: true […]

使用Gradle的SpringBoot应用程序的通用Docker镜像和Dockerfile

根据https://spring.io/guides/gs/spring-boot-docker/ ,我们可以使用应用程序的硬编码名称和版本为SpringBoot应用程序创buildDocker映像。 例如: 的src /主/搬运工/ Dockerfile FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD gs-spring-boot-docker-0.1.0.jar app.jar RUN sh -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 但是,更改应用程序的名称或版本将会破坏您放置在build.gradle任务中的Docker Build命令。 的build.gradle task buildDocker(type: Docker, dependsOn: build) { push = true applicationName = jar.baseName dockerfile = file('src/main/docker/Dockerfile') doFirst { copy { from jar into stageDir } } } gradle buildDocker命令通过从应用中分级Dockerfile和可执行Jar来执行“docker build”来构build一个映像。 题 考虑到Dockerfile中的名称是静态的,我怎样才能改变这个设置,以便在构buildDocker镜像时更改版本,甚至是我的SpringBoot应用程序的名称都不会中断我的构build?

当Gradle运行transformClasses时,Android构build在Ubuntu Docker容器中失败

我的Android项目得到很好的Windows开发机器上有很多内存。 但在一个简单的Docker容器(FROM ubuntu:xenial + Android SDK)中,gradle build(./gradlew assembleTrunkDebug)在58%的执行任务时失败: transformClassesWithPreJackPackagedLibrariesForTrunkDebug 即使有–stacktrace – debugging最多,我从错误中得到的是: Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) 有几件奇怪的事情我注意到了:传递给docker容器实例的内存参数并不重要。 它总是显示我相同的记忆统计。 Tasks: 2 total, 1 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st […]

如何将gradle复制所有非传递依赖项,剥离版本号?

我有一个使用Maven的小型多项目构build,我想要转换为Gradle。 我有几个问题需要解决,但是我会用一个单独的post来介绍每个问题。 该应用程序有三个子项目,一个REST服务,一个前端GUI和一个Docker镜像构build。 我们将这些叫做“restservice”,“gui”和“image”。 “图像”项目依赖于“restservice”和“gui”,因为它将来自这些项目的两个WAR合并到图像中。 它还依赖于提供JDBC驱动程序的工件(这不包含在“restservice”WAR中)。 为了使“image”项目中的Gradle Docker插件能够工作,我必须有一个本地文件夹,其中包含“restservice”和“gui”项目的两个WAR文件,以及JDBC jar,但版本号从文件名剥离。 Dockerfile引用的工件没有版本号。 所以,为了做到这一点,在“图像”项目中,我需要一个从副本派生的任务来将我的项目依赖项复制到一个文件夹中。 你可以在网上find这个任务的许多变体,但是它们都复制所有的依赖关系,包括传递依赖关系,并且用文件名中的版本号复制它们。 那么,我该如何定义一个Gradle任务,它只复制非传递的依赖关系(两个WAR和JDBC jar),并从文件名中去除版本号?

生成Gradle Java应用程序的dockerfile

这是我的build.gradle文件。 在eclipse中,我通过eclipse中的gradle运行docker任务,没有错误,并生成dockerfile和image。 但是当我尝试在项目位置编写ubuntuterminal的gradle build时,出现错误。 我将尝试通过编写gradle distDucker来运行任务以获得项目的gradle distDucker 。 build.gradle文件: buildscript { repositories { mavenCentral() } dependencies { classpath "se.transmode.gradle:gradle-docker:1.2" } } apply plugin: 'java' apply plugin: 'application' apply plugin: 'docker' apply plugin: 'eclipse' repositories { mavenCentral() } sourceCompatibility = 1.8 mainClassName = 'kafka.MyProducer' applicationDefaultJvmArgs = ['-Xmx1g', '-Xms1g'] dependencies { compile group: 'org.apache.kafka', name: 'kafka_2.11',version: '0.10.0.0' […]

在Docker容器中构buildJava Gradle项目?

我们有一个使用Gradle构build的Java项目,它需要Java 8等。开发人员在他们的机器上有不同的Java版本(不同的项目,IDEA一直对Open JDK很挑剔,但我们用它来运行我们的应用程序),我们希望轻松地使用正确的Java版本进行构build。 这个想法是使用Docker来完成这个任务,也就是使用正确的Java版本启动Docker容器,并将其用于构build(编译,testing,组装等)。 这是一个好主意吗? 我将如何去呢? 例如,我是否告诉Gradle启动容器,并告诉它使用它的javac? 还是启动容器,用项目代码装入一个卷,然后在该容器中使用Gradle构build? 这将有一个缺点,人们需要首先启动一个容器,但我想这可能是脚本。 有人做这样的事吗?

Grails 3.1.4和Docker – grails命令返回“没有find名称为web的configuration文件”

我有一个简单的Grails应用程序,运行良好。 使用grails webconfiguration文件和grails run-app 然而,当我从应用程序中构build一个grails dependency-report –stacktrace发送到grails dependency-report –stacktrace的grails命令(例如grails run-app –stacktrace或grails dependency-report –stacktrace将失败并显示stacktrace: | Error Error occurred running Grails CLI: No profile found for name [web]. (NOTE: Stack trace has been filtered. Use –verbose to see entire trace.) java.lang.IllegalStateException: No profile found for name [web]. at org.grails.cli.GrailsCli.initializeProfile(GrailsCli.groovy:507) at org.grails.cli.GrailsCli.initializeApplication(GrailsCli.groovy:308) at org.grails.cli.GrailsCli.execute(GrailsCli.groovy:271) at org.grails.cli.GrailsCli.main(GrailsCli.groovy:162) | Error […]

在docker容器中安装目录并运行Gradle命令

我有一个名为mydockimage的docker容器,里面安装了gradle。 我使用以下命令安装我的本地工作目录 sudo docker run -t -a stdout -a stderr –rm \ –volume /home/Myworkspace/Myproject:/workspace:rw myimage:myimage_build 我有以下问题: 从/home运行此命令/home ,我redirect到docker contanier /workspace文件夹,但是当我运行gradle响应挂起。 如果我从我的本地工作区文件夹运行安装脚本,那么它将我redirect到所有文件的docker容器,但与文件夹名称和git分支名称在花括号如下 [ root@c6ff3f80dab8:/workspace {COE *} ]$ COE是分支名称。 如果我在[ root@c6ff3f80dab8:/workspace {COE *} ]$运行gradle build ,那么应用程序将会构build,但返回到我的本地目录,不知道如何在我的docker容器中find。