- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 CI 管道中考虑这一点,我应该首先构建和测试我的应用程序,结果应该是一个 docker 镜像。
我想知道使用构建环境在构建服务器上构建然后运行测试是否更常见。也许为此使用构建脚本。最后只需将 jar 文件添加到使用 COPY 生成的 Docker 容器中,然后使用 Entrypoint java -jar .jar。因此,保持 Dockerfile 非常小,并在容器外进行测试和构建。
有点像这样:
FROM openjdk:8-jre-alpine
CMD java ${JAVA_OPTS} -jar *.jar
COPY build/libs/*.jar .
或者,如果我应该将所有源代码添加到容器中,构建它,然后在容器内运行测试,然后让入口点(像以前一样)运行生成的 jar 文件?那么将所有内容都保存在 Dockerfile 中?也许还做一些清理,删除源代码
我猜这不一定是 Java,同样的问题适用于所有语言
1 Câu trả lời
从历史上看,人们被迫运行 Docker 两次以创建不包含源代码(以及用于创建二进制文件的软件)的 docker 镜像。例如,请参见
现在,Docker 支持新的多阶段构建功能:
这使 Docker 能够使用包含构建工具的图像构建容器,但输出仅包含运行时依赖项的图像。下面的例子演示了这个概念,注意 jar 是如何从第一个构建阶段的目标目录复制的
FROM maven:3.3-jdk-8-onbuild
FROM java:8
COPY --from=0 /usr/src/app/target/demo-1.0-SNAPSHOT.jar /opt/demo.jar
CMD ["java","-jar","/opt/demo.jar"]
生成的图像不包含 maven,仅包含 java 和构建的 jar。
假设我们不是在谈论单元测试(可以在本地运行),集成测试需要先部署代码。这种情况下的答案在很大程度上取决于您如何部署容器化 Java 应用程序。
例如,如果您使用的是 Kubernetes 或 Openshift,一种选择是使用 Fabric8 plugin在 Maven 中运行测试阶段之前部署代码。
关于Java docker 文件。构建并测试还是只运行 jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45353790/
Tôi đang gặp sự cố khi xây dựng một ứng dụng cụ thể bằng gradle. Ứng dụng này có thể được biên dịch và xây dựng bằng Eclipse và chạy tốt trên máy tính bảng. Khi tôi thử xây dựng nó bằng Gradle, "compileDebugJava"
Tôi có một chương trình C do một lập trình viên nghỉ việc để lại. Tôi cố gắng tìm hiểu chính xác anh ấy đang làm gì và sắp xếp lại phần mềm thành thứ gì đó hợp lý hơn để tôi có thể xây dựng nó dễ dàng hơn. Tôi sử dụng CMake để xây dựng, còn anh ấy sử dụng Make. có
Tôi vừa bắt đầu đọc "Pro Spring MVC with web flow" và sách có kèm theo một ví dụ mã mà tôi muốn làm theo. Những gì tôi muốn - Tôi muốn xây dựng ứng dụng như trong sách, sử dụng Gradle. Những vấn đề là gì - Tôi chưa bao giờ sử dụng Gradle
Tôi hy vọng ai đó đã làm điều này rồi. Tôi đang cố gắng thiết lập bản dựng liên tục trong teamcity cho một trong những dự án Angular 2 của mình. Sau khi nghiên cứu, tôi đã làm theo các bước sau: Bước 1: Cài đặt js cho teamcity
Tôi có một giải pháp trang web ASP.Net cũ trông như thế này: Khi tôi xây dựng giải pháp trong Visual Studio, tôi nhận được kết quả sau: ------ Build started: Project: C:\..
Tôi sử dụng gulp-usref, gulp-if, gulp-uglify, gulp-csso và gulp-file-include để xây dựng ứng dụng của mình. Mọi thứ trong bản dựng đều hoạt động tốt ngoại trừ HTML vẫn giữ nguyên
Tôi đang phát triển một ứng dụng di động nội bộ bằng ionic2. Tôi có thể xây dựng thành công cho ios thông qua: ionic build ios và ionic build ios --prod nhưng nó cứ bị lỗi khi tôi thực hiện
Tôi là một nhà phát triển .NET/C# giàu kinh nghiệm nhưng lại mới làm quen với hầu hết các công nghệ/thư viện ở đây (bao gồm cả công việc SQL/DB). Tôi đang phát triển một ứng dụng .NET với nền tảng Azure/Entity Framework và một ứng dụng di động
Tôi đang sử dụng VS 2008. Tôi có thể biên dịch thành công giải pháp của mình bằng IDE. Tuy nhiên, khi tôi thử xây dựng bằng devenv.com, nó không thành công với lỗi "Lỗi: Không tìm thấy đầu ra nào cho nhóm đầu ra của dự án '(không thể xác định tên)'". Nhóm, cấu hình của nó, hoặc
Phiên bản: ember.js 2.7, ember-data 2.7 ember-cli 2.9.1 // cũng hoạt động với ember-cli 2.7 node 6.9.1, npm 3.10.9 // cũng hoạt động với no
Đây là lần đầu tiên tôi mày mò AzureDevops và thiết lập một số tác vụ CI. Tôi có một kho lưu trữ công khai (mã nguồn mở) và một giải pháp (.sln) chứa 3 dự án F#. Giải pháp có sẵn trên Windows/Mac/Li
Có vẻ như VS2008 vẫn chưa được phiên bản 5.1.5 hiện tại hoặc kho lưu trữ CVS STLPort hỗ trợ. Nếu ai đó đã làm điều này rồi thì sẽ rất hữu ích nếu chia sẻ nếu có thể :) Ngoài ra, hãy tìm hiểu về bản dựng VS2005 hoặc 2008 x64
Tôi có một dự án Python 2.7 và cho đến nay đã sử dụng gfortran và MinGW để xây dựng các tiện ích mở rộng. Tôi sử dụng MinGW vì nó dường như hỗ trợ các câu lệnh ghi và mảng có thể phân bổ trong mã Fortran, trong khi MSVC
đóng cửa. Câu hỏi này không liên quan đến chủ đề. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi để phù hợp với chủ đề trên Stack Overflow. Đã đóng cửa 9 năm trước. Cải thiện hàng đợi này
Tôi tự hỏi tại sao Zimbra Wiki chỉ liệt kê các nền tảng cụ thể cho quá trình xây dựng. Điều này có nghĩa là không thể xây dựng Zimbra trên các bản phân phối Linux khác không? Cộng đồng Zimbra chọn một bản phân phối Linux cụ thể để xây dựng Zimbra
Tôi sẽ xây dựng một công cụ CLI trong Swift. Tôi đã tạo dự án bằng lệnh này swift package init --type executable Khi tôi xây dựng dự án của mình và phân tích các tham số trong Xcode, hãy đọc bí danh và
Tôi muốn thiết lập quyền cho các tệp được thêm vào ảnh docker. Tôi có Dockerfile đơn giản này: FROM ubuntu:utopic WORKDIR /app RUN groupadd -g 1000 b
Khi tôi sử dụng clBuildProgram trong mã OpenCl của mình, nó không thành công với mã lỗi -11 mà không có bất kỳ thông tin nhật ký nào. Đây là mã của tôi trông như thế nào: ret = clBuildProgram(program
Tôi có một thanh điều hướng ở phía dưới có trang danh sách sử dụng khối trạng thái. lớp _MainPageState mở rộng State { int _index = 0; @override Wi
Tôi đang sử dụng Jenkins trên máy cục bộ của mình (URL Jenkins không được hiển thị trên Internet, nhưng Internet được bật trên máy đó.) Tôi đã thực hiện các thay đổi cấu hình sau: Cài đặt plugin Git và Github trên công cụ Jenkins
Tôi là một lập trình viên xuất sắc, rất giỏi!