在本文中,我们将给您介绍关于使用PalantirGradle插件构建Docker容器时找不到.jar文件的详细内容,此外,我们还将为您提供关于(Docker)获取错误:docker-php-sourc
在本文中,我们将给您介绍关于使用Palantir Gradle插件构建Docker容器时找不到.jar文件的详细内容,此外,我们还将为您提供关于(Docker)获取错误:docker-php-source:构建docker文件时没有这样的文件或目录、Android gradle插件v3.3.0->使用Proguard时找不到R $raw、Android的Docker容器:Gradle构建守护进程意外消失(它可能已被杀死或崩溃)、CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统的知识。
本文目录一览:- 使用Palantir Gradle插件构建Docker容器时找不到.jar文件
- (Docker)获取错误:docker-php-source:构建docker文件时没有这样的文件或目录
- Android gradle插件v3.3.0->使用Proguard时找不到R $raw
- Android的Docker容器:Gradle构建守护进程意外消失(它可能已被杀死或崩溃)
- CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统
使用Palantir Gradle插件构建Docker容器时找不到.jar文件
如果我尝试在Windows 10下使用Spring Boot应用程序构建Docker容器,则会出现以下错误:
> Task :docker FAILEDCOPY failed: stat /var/lib/docker/tmp/docker-builder711841135/myproject.jar: no such file or directory
我正在使用版本为18.03.0-ce-win59(16762)和Java的Gradle 4.7的Docker Community Edition。
build.gradle (缩短):
plugins { id ''java'' id ''org.springframework.boot'' version ''2.0.1.RELEASE'' id "com.palantir.docker" version "0.19.2"}version = ''2.0.0''sourceCompatibility = 1.8group = "com.example"repositories { mavenCentral()}bootJar { archiveName ''myproject.jar''}dependencies { ...}docker { dependsOn(build) name "${project.group}/${jar.baseName}" files bootJar}
Dockerfile (顶级项目目录中的 build.gradle 兄弟):
FROM openjdk:8-jreCOPY build/libs/myproject.jar myproject.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myproject.jar"]
如果我仅使用Docker(不使用Gradle)构建Docker容器,则它可以工作。
如何让Gradle(或Docker?)找到文件myproject.jar?
答案1
小编典典问题是COPY
Docker文件中的命令:
COPY build/libs/myproject.jar myproject.jar
源目录build/libs/
不是用于构建Docker容器的文件所在的位置。而是将该目录build/docker/
用作Docker构建上下文。当COPY
执行时,该目录是有效的工作目录。
正确的COPY
命令是如此简单:
COPY myproject.jar /
Docker任务:
docker { dependsOn bootJar name "${project.group}/${jar.baseName}:${version}" files bootJar.archivePath}
如果也要复制资源,则需要添加processResources
到files
参数:
files bootJar.archivePath, processResources
(Docker)获取错误:docker-php-source:构建docker文件时没有这样的文件或目录
当我尝试在https://github.com/docker-library/php/blob/3f43309a0d5a427f54dc885e0812068ee767c03e/7.1/Dockerfile处构建docker文件时
命令:docker build -t PHP_image.
我正在考虑以下错误:
Step 14 : copY docker-PHP-source /usr/local/bin/
lstat docker-PHP-source: no such file or directory
有人能帮我弄清楚这里有什么不对吗?
谢谢
解决方法:
您没有docker构建的正确上下文.
只需克隆repo以确保拥有所有文件(及其正确的权限):
git clone https://github.com/docker-library/PHP
docker build . -t PHP_image
但是如果你需要自定义该图像,那么根据官方版本制作自己的Dockerfile会更容易:
FROM PHP:7
RUN #your commands
RUN ...
Android gradle插件v3.3.0->使用Proguard时找不到R $raw
刚更新为Android Gradle插件版本3.3.0
我们有以下设置(不确定哪个很重要):
>具有3个库模块(数据,域,utils)的应用程序项目(app)
>启用数据绑定(databinding.enabled为true)
>启用Proguard(proguardFiles’proguard-rules.pro’)
当我使用以下方式构建应用程序时:
./gradlew assembleDevRelease
我收到以下错误:
找不到引用的类my.package.data.R $raw
当我使用以下方式构建应用程序时:
./gradlew:app:assembleDevRelease
该应用程序构建良好,生成了一个模糊的* .apk,我可以安装它
题:
> assembleRelease和:app:assembleRelease有什么区别
-为什么切换到android gradle插件3.3.0会影响构建apk必须调用的任务?我们在CI管道的任何地方都使用assembleRelease来构建apk.
> android gradle插件3.3.0中发生了什么更改,导致任务assembleRelease中断?我们在CI管道的任何地方都使用assembleRelease来构建apk.
>关于如何使’assembleRelease’重新工作的任何建议? (更新Proguard配置?,启用R8?)
What’s the difference between
assembleRelease
and:app:assembleRelease
前者在相对于当前级别的所有模块上运行assembleRelease任务.后者仅在应用程序模块(及其依赖项)上运行它.
Why does switching to android gradle plugin 3.3.0 affect which task I have to call to build my apk? We use
assembleRelease
everywhere in our CI pipelines to build our apks.
该问题没有足够的信息可以肯定地说,但是release notes中列出了许多更改.例如,此问题可能与以下方面有关:
Faster R class generation for library projects: PrevIoUsly,the Android Gradle plugin would generate an
R.java
file for each of your project’s dependencies and then compile those R classes alongside your app’s other classes. The plugin Now generates a JAR containing your app’s compiled R class directly,without first building intermediateR.java
classes. This optimization may significantly improve build performance for projects that include many library subprojects and dependencies,and improve the indexing speed in Android Studio.
Android的Docker容器:Gradle构建守护进程意外消失(它可能已被杀死或崩溃)
我试图在Docker容器上构建android,每次./gradlew assembleDebug都出现此错误
:saltside-android:transformClassesWithDexForBikroyDebugThe message received from the daemon indicates that the daemon has disappeared.
Build request sent: BuildAndStop{id=81f2e456-bb5b-4cf8-9190-3c8b22e286b6.1, currentDir=/app/project-main}
Attempting to read last messages from the daemon log…
Daemon pid: 35
log file: /root/.gradle/daemon/3.3/daemon-35.out.log
—– Last 20 lines from daemon log file – daemon-35.out.log —–
:saltside-android:processBugsnagBikroyDebugManifest
:saltside-android:processBikroyDebugResources
:saltside-android:generateBikroyDebugSources
:saltside-android:incrementalBikroyDebugJavaCompilationSafeguard
:saltside-android:javaPreCompileBikroyDebug
:saltside-android:compileBikroyDebugJavaWithJavacNote: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:
:saltside-android:compileBikroyDebugNdk UP-TO-DATE
:saltside-android:compileBikroyDebugSources
:saltside-android:mergeBikroyDebugShaders
:saltside-android:compileBikroyDebugShaders
:saltside-android:generateBikroyDebugAssets
:saltside-android:mergeBikroyDebugAssets
:saltside-android:processBugsnagBikroyDebugProguard
:saltside-android:transformClassesWithJarMergingForBikroyDebug
:saltside-android:transformClassesWithMultidexlistForBikroyDebug
:saltside-android:transformClassesWithDexForBikroyDebug
—– End of the daemon log —–
:
FAILURE: Build Failed with an exception.
:
* What went wrong:
Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
:
* Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.
我已经增加了内存并在gradle.properties中禁用了守护程序,就像这样
org.gradle.jvmargs=-Xmx4608m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.daemon=false
任何人都知道有什么解决方案吗?
解决方法:
我得到了解决方案,但仍在写答案,以便任何机构都遇到同样的问题并可以解决.
这是由于docker容器的内存大小所致,我使用的是Mac,看来问题仅出在Mac机器上.
在默认情况下,mack上的容器大小为2GB,您可以使用free命令检查docker容器.因此将其增加到4GB或更多,繁荣解决您的问题即可.
Docker->Preferences->Advanced->Memory
CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统
CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
利用docker compose组合应用并利用scale可以快速对容器进行扩充,而docker compose启动的服务容器都在同一台宿主机上,对于一个宿主机上运行多个容器应用时,容器的运行情况,如:cpu使用率,内存使用率,网络状态,磁盘空间等一系列随时间变化的时序数据信息,都需要进行了解,因此监控是必须的。
容器监控方案选择
对于容器的监控方案可谓多种多样,除了docker本身自带的 docker stats 命令,还有Scout,Data Dog,Sysdig Cloud,Sensu Monitoring Framework,CAdvisor等都可以对容器进行监控。
通过 docker stats 命令可以很方便的看到当前宿主机上所有容器的cpu,内存,以及网络流量等数据。但 docker stats 命令的缺点是只是统计当前宿主机的所有容器,获取的数据是实时的,没有地方存储,也没有报警功能。
而Scout,Data Dog,Sysdig Cloud虽然都提供了较完善的服务,但是它们都是托管的服务且都是收费的,Sensu Monitoring Framework集成度较高,也免费,但是部署过于复杂,综合考虑选择CAdvisor做监控工具。
CAdvisor出自Google,优点是开源产品,监控指标齐全,部署方便,而且有官方的docker镜像。缺点是集成度不高,默认只在本地保存2分钟数据。不过,可以加上InfluxDB存储数据,对接Grafana展示图表,比较便利搭建容器监控系统,数据收集和图表展示效果良好,对系统性能也几乎没什么影响。
CAdvisor + InfluxDB + Grafana搭建容器监控系统
CAdvisor
CAdvisor是一个容器资源监控工具,包括容器的内存,cpu,网络IO,磁盘IO等,同时提供了一个WEB页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据,而且只是针对单物理机,不过,CAdvisor提供了很多数据集成接口,支持InfluxDB,Redis,Kafka,Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
CAdvisor功能主要有两点,展示Host,容器两个层次的监控数据和展示历史变化
InfluxDB
InfluxDB是用Go语言编写的一个开源分布式时序,事件和指标数据库,无需外部依赖。
由于CAdvisor默认只在本地保存最近2分钟的数据,为了持久化数据和统一收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一个时序数据库,专门用于存储时序相关数据,很适合存储CAdvisor数据,而且CAdvisor本身提供了InfluxDB集成的方法,在启动容器时指定配置即可。
InfluxDB主要功能:
基于时间序列,支持与时间有关的相关函数
可度量性,可以实时对大量数据进行计算
基于事件,支持任意的事件数据
InfluxDB主要特点:
无结构
可以是任意数量的列
可拓展
支持min,max等一系列的函数,方便统计
原生的HTTP支持,内置HTTP API
强大的类sql语法
Granfana
Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(如InfluxDB,MySQL,Elasticserach,OpenTSDB,Graphite等)和丰富的插件及模板功能,支持图表权限控制和报警。
Grafana主要特点
灵活丰富的图形化选项
可以混合多种风格
支持白天和夜间模式
多数据源
CAdvisor负责收集容器随时间变化的数据
InfluxDB负责存储时序数据
Grafana负责分析和展示时序数据
安装部署
部署InfluxDB服务
启动InfluxDB的服务容器:
docker run -d --name influxdb -p 8086:8086 \
-v /data/influxdb:/var/lib/influxdb \
--hostname influexdb \
influxdb
在容器中创建test数据库和root用户
docker exec -it influxdb influx
> CREATE DATABASE "test"
> CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
部署CAdvisor
启动CAdvisor的服务容器:
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest \
-storage_driver=influxdb \
-storage_driver_host=influxdb:8086 \
-storage_driver_db=test \
-storage_driver_user=root \
-storage_driver_password=root
服务容器起来后可通过浏览器访问 http:///ip:8080
部署Grafana
启动Grafana服务容器:
docker run -d -p 3000:3000 \
-v /data/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana
直接运行该命令后有可能会发现容器并没有启起来,通过 docker logs 命令会发现”mkdir: can’t create directory ‘/var/lib/grafana/plugins’: Permission denied“的错误,其实就是没有 数据卷对应的主机上 /data/grafana 的权限,可以在运行启动命令前先创建 /data/grafana 目录并给定权限777,或者通过”docker run —entrypoint “id” grafana/grafana“ 查看uid,gid,groups (默认为472),然后通过”chown -R 472:472 /data/grafana“修改权限。
Grafana正常启动后就可以 http://ip:3000 访问,出现以下的登录页面,初次访问需要修改密码,默认用户名密码为:admin/admin
Docker Compose集成部署
准备docker-compose.yml文件
version: '3.1'
volumes:
grafana_data: {}
services:
influxdb:
image: influxdb
restart: always
environment:
- PRE_CREATE_DB=cadvisor
ports:
- "8086:8086"
expose:
- "8090"
- "8099"
volumes:
- ./data/influxdb:/data
cadvisor:
image: google/cadvisor
links:
- influxdb:influxdb-host
command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb-host:8086
restart: always
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
grafana:
user: "104"
image: grafana/grafana
restart: always
links:
- influxdb:influxdb-host
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/data
environment:
- HTTP_USER=admin
- HTTP_PASS=admin
- INFLUXDB_HOST=influxdb-host
- INFLUXDB_PORT=8086
- INFLUXDB_NAME=cadvisor
- INFLUXDB_USER=root
- INFLUXDB_PASS=root
在docker-compose.yml文件目录运行以下命令启动服务:
docker-compose up -d
-d指定在后台启动,初次启动可以不加可以在控制台查看启动日志,当然后台启动也可以通过“docker-compose logs”进行查看启动日志。
服务正常启动后就可以 http://ip:3000 访问Granafa,在Home Dashboard页面点击添加data source
配置InfluxDB连接信息,当然在配置连接信息前需要进入InfluxDB容器创建相应的cadvisor数据库和用户root/root
在容器中创建cadvisor数据库和root用户
docker exec -it influxdb-contianer-id influx
> CREATE DATABASE "cadvisor"
> CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
配置连接InfluxDB连接:
数据源配好之后可以回到Home Dashboard添加添加dashboard图表展示监控信息,Grafana提供了丰富的图片模板对监控数据进行展示。
添加dashboard:
可选模板:
编辑图表:
配置监控cadvisor容器的内存使用情况的图表展示,配置好之后点击保存就可以了。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注小编行业资讯频道,感谢您对小编的支持。
今天关于使用Palantir Gradle插件构建Docker容器时找不到.jar文件的分享就到这里,希望大家有所收获,若想了解更多关于(Docker)获取错误:docker-php-source:构建docker文件时没有这样的文件或目录、Android gradle插件v3.3.0->使用Proguard时找不到R $raw、Android的Docker容器:Gradle构建守护进程意外消失(它可能已被杀死或崩溃)、CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统等相关知识,可以在本站进行查询。
本文标签: