gpt4 book ai didi

docker - 如何使用Dockerfile正确构建Spring Boot Docker镜像?

转载 作者:行者123 更新时间:2023-12-02 18:32:01 25 4
gpt4 key购买 nike

我具有以下Spring Boot项目结构:

pwd
/Users/eugene/Documents/Dev/Java/workspace/Springboot-Receiver-API

tree
.
├── Dockerfile
├── pom.xml
├── src
│   └── main
│   ├── java
│   │   └── com
│   │   └── myconpany
│   │   └── myproject
│   │   └── data
│   │   ├── Application.java
│   │   ├── ConsumerThreadPool.java
│   │   ├── ErpConsumer.java
│   │   ├── configs
│   │   │   ├── ConsumerConfigFactory.java
│   │   │   └── DatabaseConfig.java
│   │   ├── controllers
│   │   │   ├── AppBeans.java
│   │   │   ├── BankcustpaymidtableController.java
│   │   │   ├── CompanynafcodeController.java
│   │   │   ├── CustcollectionscontactController.java
│   │   │   ├── CustdirectdebitmandateController.java
│   │   │   ├── CusttableController.java
│   │   │   ├── CusttradingpartnercodeController.java
│   │   │   ├── DirnameaffixController.java
│   │   │   ├── DirnamesequenceController.java
│   │   │   ├── DirorganizationnameController.java
│   │   │   ├── DirpartylocationController.java
│   │   │   ├── DirpartytableController.java
│   │   │   ├── DirpersonnameController.java
│   │   │   ├── DirpersonuserController.java
│   │   │   ├── HcmworkerController.java
│   │   │   ├── LogisticselectronicaddressController.java
│   │   │   ├── LogisticspostaladdressController.java
│   │   │   ├── LvpaymtranscodesController.java
│   │   │   ├── MainController.java
│   │   │   ├── McrcusttableController.java
│   │   │   ├── McrmessageassociationCOntroller.java
│   │   │   ├── RetailcusttableController.java
│   │   │   ├── SpringBootKafkaProducer.java
│   │   │   ├── Taxgstreliefgroupheading_myController.java
│   │   │   ├── Taxinformationcusttable_inController.java
│   │   │   └── WhscusttableController.java
│   │   └── models
│   │   ├── Bankcustpaymidtable.java
│   │   ├── BankcustpaymidtableCompositeKey.java
│   │   ├── BankcustpaymidtableDao.java
│   │   ├── Companynafcode.java
│   │   ├── CompanynafcodeCompositeKey.java
│   │   ├── CompanynafcodeDao.java
│   │   ├── Custcollectionscontact.java
│   │   ├── CustcollectionscontactCompositeKey.java
│   │   ├── CustcollectionscontactDao.java
│   │   ├── Custdirectdebitmandate.java
│   │   ├── CustdirectdebitmandateCompositeKey.java
│   │   ├── CustdirectdebitmandateDao.java
│   │   ├── Custtable.java
│   │   ├── CusttableCompositeKey.java
│   │   ├── CusttableDao.java
│   │   ├── Custtradingpartnercode.java
│   │   ├── CusttradingpartnercodeCompositeKey.java
│   │   ├── CusttradingpartnercodeDao.java
│   │   ├── Dirnameaffix.java
│   │   ├── DirnameaffixCompositeKey.java
│   │   ├── DirnameaffixDao.java
│   │   ├── Dirnamesequence.java
│   │   ├── DirnamesequenceCompositeKey.java
│   │   ├── DirnamesequenceDao.java
│   │   ├── Dirorganizationname.java
│   │   ├── DirorganizationnameCompositeKey.java
│   │   ├── DirorganizationnameDao.java
│   │   ├── Dirpartylocation.java
│   │   ├── DirpartylocationCompositeKey.java
│   │   ├── DirpartylocationDao.java
│   │   ├── Dirpartytable.java
│   │   ├── DirpartytableCompositeKey.java
│   │   ├── DirpartytableDao.java
│   │   ├── Dirpersonname.java
│   │   ├── DirpersonnameCompositeKey.java
│   │   ├── DirpersonnameDao.java
│   │   ├── Dirpersonuser.java
│   │   ├── DirpersonuserCompositeKey.java
│   │   ├── DirpersonuserDao.java
│   │   ├── Hcmworker.java
│   │   ├── HcmworkerCompositeKey.java
│   │   ├── HcmworkerDao.java
│   │   ├── Logisticselectronicaddress.java
│   │   ├── LogisticselectronicaddressCompositeKey.java
│   │   ├── LogisticselectronicaddressDao.java
│   │   ├── Logisticspostaladdress.java
│   │   ├── LogisticspostaladdressCompositeKey.java
│   │   ├── LogisticspostaladdressDao.java
│   │   ├── Lvpaymtranscodes.java
│   │   ├── LvpaymtranscodesCompositeKey.java
│   │   ├── LvpaymtranscodesDao.java
│   │   ├── Mcrcusttable.java
│   │   ├── McrcusttableCompositeKey.java
│   │   ├── McrcusttableDao.java
│   │   ├── Mcrmessageassociation.java
│   │   ├── McrmessageassociationCompositeKey.java
│   │   ├── McrmessageassociationDao.java
│   │   ├── Retailcusttable.java
│   │   ├── RetailcusttableCompositeKey.java
│   │   ├── RetailcusttableDao.java
│   │   ├── Taxgstreliefgroupheading_my.java
│   │   ├── Taxgstreliefgroupheading_myCompositeKey.java
│   │   ├── Taxgstreliefgroupheading_myDao.java
│   │   ├── Taxinformationcusttable_in.java
│   │   ├── Taxinformationcusttable_inCompositeKey.java
│   │   ├── Taxinformationcusttable_inDao.java
│   │   ├── Whscusttable.java
│   │   ├── WhscusttableCompositeKey.java
│   │   └── WhscusttableDao.java
│   └── resources
│   └── application.properties
└── target
├── Spring-Boot-ReceiverAPI-0.0.1-SNAPSHOT.jar
├── Spring-Boot-ReceiverAPI-0.0.1-SNAPSHOT.jar.original
├── classes
│   ├── META-INF
│   │   ├── MANIFEST.MF
│   │   └── maven
│   │   ├── netgloo
│   │   │   └── spring-boot-mysql-jpa-hibernate
│   │   │   ├── pom.properties
│   │   │   └── pom.xml
│   │   └── myconpany
│   │   └── Spring-Boot-ReceiverAPI
│   │   ├── pom.properties
│   │   └── pom.xml
│   ├── application.properties
│   └── com
│   └── myconpany
│   └── myproject
│   └── data
│   ├── Application.class
│   ├── ConsumerThreadPool.class
│   ├── ErpConsumer$1.class
│   ├── ErpConsumer$10.class
│   ├── ErpConsumer$11.class
│   ├── ErpConsumer$2.class
│   ├── ErpConsumer$3.class
│   ├── ErpConsumer$4.class
│   ├── ErpConsumer$5.class
│   ├── ErpConsumer$6.class
│   ├── ErpConsumer$7.class
│   ├── ErpConsumer$8.class
│   ├── ErpConsumer$9.class
│   ├── ErpConsumer.class
│   ├── configs
│   │   ├── ConsumerConfigFactory.class
│   │   └── DatabaseConfig.class
│   ├── controllers
│   │   ├── AppBeans.class
│   │   ├── BankcustpaymidtableController$1.class
│   │   ├── BankcustpaymidtableController.class
│   │   ├── CompanynafcodeController$1.class
│   │   ├── CompanynafcodeController.class
│   │   ├── CustcollectionscontactController$1.class
│   │   ├── CustcollectionscontactController.class
│   │   ├── CustdirectdebitmandateController$1.class
│   │   ├── CustdirectdebitmandateController.class
│   │   ├── CusttableController.class
│   │   ├── CusttradingpartnercodeController$1.class
│   │   ├── CusttradingpartnercodeController.class
│   │   ├── DirnameaffixController$1.class
│   │   ├── DirnameaffixController.class
│   │   ├── DirnamesequenceController$1.class
│   │   ├── DirnamesequenceController.class
│   │   ├── DirorganizationnameController$1.class
│   │   ├── DirorganizationnameController.class
│   │   ├── DirpartylocationController$1.class
│   │   ├── DirpartylocationController.class
│   │   ├── DirpartytableController$1.class
│   │   ├── DirpartytableController.class
│   │   ├── DirpersonnameController$1.class
│   │   ├── DirpersonnameController.class
│   │   ├── DirpersonuserController$1.class
│   │   ├── DirpersonuserController.class
│   │   ├── HcmworkerController.class
│   │   ├── LogisticselectronicaddressController$1.class
│   │   ├── LogisticselectronicaddressController.class
│   │   ├── LogisticspostaladdressController$1.class
│   │   ├── LogisticspostaladdressController.class
│   │   ├── LvpaymtranscodesController$1.class
│   │   ├── LvpaymtranscodesController.class
│   │   ├── MainController.class
│   │   ├── McrcusttableController$1.class
│   │   ├── McrcusttableController.class
│   │   ├── McrmessageassociationCOntroller$1.class
│   │   ├── McrmessageassociationCOntroller.class
│   │   ├── RetailcusttableController$1.class
│   │   ├── RetailcusttableController.class
│   │   ├── SpringBootKafkaProducer.class
│   │   ├── Taxgstreliefgroupheading_myController$1.class
│   │   ├── Taxgstreliefgroupheading_myController.class
│   │   ├── Taxinformationcusttable_inController$1.class
│   │   ├── Taxinformationcusttable_inController.class
│   │   ├── WhscusttableController$1.class
│   │   └── WhscusttableController.class
│   └── models
│   ├── Bankcustpaymidtable.class
│   ├── BankcustpaymidtableCompositeKey.class
│   ├── BankcustpaymidtableDao.class
│   ├── Companynafcode.class
│   ├── CompanynafcodeCompositeKey.class
│   ├── CompanynafcodeDao.class
│   ├── Custcollectionscontact.class
│   ├── CustcollectionscontactCompositeKey.class
│   ├── CustcollectionscontactDao.class
│   ├── Custdirectdebitmandate.class
│   ├── CustdirectdebitmandateCompositeKey.class
│   ├── CustdirectdebitmandateDao.class
│   ├── Custtable.class
│   ├── CusttableCompositeKey.class
│   ├── CusttableDao.class
│   ├── Custtradingpartnercode.class
│   ├── CusttradingpartnercodeCompositeKey.class
│   ├── CusttradingpartnercodeDao.class
│   ├── Dirnameaffix.class
│   ├── DirnameaffixCompositeKey.class
│   ├── DirnameaffixDao.class
│   ├── Dirnamesequence.class
│   ├── DirnamesequenceCompositeKey.class
│   ├── DirnamesequenceDao.class
│   ├── Dirorganizationname.class
│   ├── DirorganizationnameCompositeKey.class
│   ├── DirorganizationnameDao.class
│   ├── Dirpartylocation.class
│   ├── DirpartylocationCompositeKey.class
│   ├── DirpartylocationDao.class
│   ├── Dirpartytable.class
│   ├── DirpartytableCompositeKey.class
│   ├── DirpartytableDao.class
│   ├── Dirpersonname.class
│   ├── DirpersonnameCompositeKey.class
│   ├── DirpersonnameDao.class
│   ├── Dirpersonuser.class
│   ├── DirpersonuserCompositeKey.class
│   ├── DirpersonuserDao.class
│   ├── Hcmworker.class
│   ├── HcmworkerCompositeKey.class
│   ├── HcmworkerDao.class
│   ├── Logisticselectronicaddress.class
│   ├── LogisticselectronicaddressCompositeKey.class
│   ├── LogisticselectronicaddressDao.class
│   ├── Logisticspostaladdress.class
│   ├── LogisticspostaladdressCompositeKey.class
│   ├── LogisticspostaladdressDao.class
│   ├── Lvpaymtranscodes.class
│   ├── LvpaymtranscodesCompositeKey.class
│   ├── LvpaymtranscodesDao.class
│   ├── Mcrcusttable.class
│   ├── McrcusttableCompositeKey.class
│   ├── McrcusttableDao.class
│   ├── Mcrmessageassociation.class
│   ├── McrmessageassociationCompositeKey.class
│   ├── McrmessageassociationDao.class
│   ├── Retailcusttable.class
│   ├── RetailcusttableCompositeKey.class
│   ├── RetailcusttableDao.class
│   ├── Taxgstreliefgroupheading_my.class
│   ├── Taxgstreliefgroupheading_myCompositeKey.class
│   ├── Taxgstreliefgroupheading_myDao.class
│   ├── Taxinformationcusttable_in.class
│   ├── Taxinformationcusttable_inCompositeKey.class
│   ├── Taxinformationcusttable_inDao.class
│   ├── Whscusttable.class
│   ├── WhscusttableCompositeKey.class
│   └── WhscusttableDao.class
├── generated-sources
│   └── annotations
├── maven-archiver
│   └── pom.properties
├── maven-status
│   └── maven-compiler-plugin
│   └── compile
│   └── default-compile
│   ├── createdFiles.lst
│   └── inputFiles.lst
└── test-classes

我的Dockerfile看起来像这样:
FROM java:8
ADD target/Spring-Boot-ReceiverAPI-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

从项目根 (/Users/eugene/Documents/Dev/Java/workspace/Springboot-Receiver-API)中,我运行以下命令来构建docker镜像:
sudo docker build - < Dockerfile

我得到以下输出:
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM java:8
---> 96cddf5ae9f1
Step 2 : ADD target/Spring-Boot-ReceiverAPI-0.0.1-SNAPSHOT.jar app.jar
lstat target/Spring-Boot-ReceiverAPI-0.0.1-SNAPSHOT.jar: no such file or directory

从同一目录中,当我运行 ls target/Spring-Boot-ReceiverAPI-0.0.1-SNAPSHOT.jar时,我得到:
target/Spring-Boot-ReceiverAPI-0.0.1-SNAPSHOT.jar

为了使docker build识别我的 target/Spring-Boot-ReceiverAPI-0.0.1-SNAPSHOT.jar文件,我应该做什么?

最佳答案

AFAIK您可以使用maven-resources-plugin来确保Dockerfile位于适当的位置(然后您甚至可以将jar文件的名称作为变量放入Dockerfile中):

<build>
<resources>
<resource>
<directory>${basedir}/src/main/docker</directory>
<filtering>true</filtering>
<includes>
<include>Dockerfile</include>
</includes>
</resource>
</resources>
</build>

或者,甚至更好的是,您可以按照下面的描述去购买 maven-docker-plugin:
https://spring.io/guides/gs/spring-boot-docker/

希望有帮助!

关于docker - 如何使用Dockerfile正确构建Spring Boot Docker镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39838650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com