我有这个工作简单的dockerfile。来自openjdk: 8-jdk-alpine WORKDIR /data复制目标/*. jar,myapp.jar入口点["java","-jar",myapp.jar]
我在本地或管道中使用maven构建jar,然后使用它。罐子在这里。我见过很多例子在dockerfile中安装maven,而不是以前进行构建。这难道不是让图像变大了吗?这样做有好处吗?
我认为您正在寻找多阶段构建。多级Dockerfile示例:
# syntax=docker/dockerfile:1
FROM golang:1.16
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html
COPY app.go ./
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app ./
CMD ["./app"]
注意COPY--from=0...
行,它将在第一个容器中发生的构建结果复制到第二个容器中。这些多阶段构建对于需要在特定版本中安装自己的工具的构建是个好主意。示例取自https://docs.docker.com/develop/develop-images/multistage-build/
通常我有一个CICD服务器,用于构建jar文件,然后使用它生成docker图像。构建jar会消耗资源,在运行docker容器时构建jar可能需要更长的时间,具体取决于您的配置。在正常的CICD策略中,构建和部署是不同的步骤。我也相信你的docker形象应该尽可能的瘦。
这是我的意见。
我希望我能以某种方式帮助你。
问题内容: 当我说时,这是否包括permgen即从这些1024m中提取的还是单独的? 看着这个, 我认为它需要1024m,但是直到现在我仍然认为它们是分开的。 问题答案: 不,permGen空间是主堆之外的空间(后者通过Sun VM上的-Xmx限制)
问题内容: MSDN文档指出: COUNT(*)返回组中的项目数。这包括NULL值和重复项。 您如何在一个组中有一个空值?谁能解释他们要提出的观点? 问题答案: 如果你有这张桌子 表格1: 然后 输出为:
问题内容: 我看到人们正在使用另一个列表来查看列表中是否存在某项,但是有一种快速的方法吗?: 问题答案: 您可以使用以下语法: 同样,逆运算符: 它适用于列表,元组,集合和字典(检查键)。 请注意 ,这是列表和元组中的O(n)操作,而集合和字典中是O(1)操作。
问题内容: 我只是想知道如何检查TreeMap>是否包含Java中的值?例如: 当我使用containsValue()或contains()方法时,我总是会得到false。有人知道为什么,可以给我建议吗? 谢谢爱德 问题答案: 您正在测试以查看地图是否包含字符串“ square”-但是地图中的值是ArrayList 对象。 如果知道要查找形状,则可以首先获取“形状”列表,然后进行测试以查看其是否包
本文向大家介绍找出varchar在MySQL中是否包含百分号?,包括了找出varchar在MySQL中是否包含百分号?的使用技巧和注意事项,需要的朋友参考一下 要在MySQL中找出包含百分号的varchar,可以使用LIKE运算符。语法如下- 为了理解上述语法,让我们创建一个表。创建表的查询如下- 使用insert命令插入一些带有%符号的记录。查询如下- 使用select语句显示表中的所有记录。查
问题内容: 我正在创建一个将结果作为JSON返回的API。当前值是否为null时是否存在最佳做法的当前最佳实践?例如: 要么 因为第二个较小,所以我倾向于这种样式,但是我不确定是否有首选样式。从客户的角度看,这两种样式在功能上似乎是等效的。每个都有优点或缺点吗? 问题答案: 第二个将节省少量带宽,但是如果您担心这一点,则还可以使用索引数组,而不用键填充JSON。显然,它比您现在拥有的要短得多。 在