我正试图找出docker的第100次。现在,我创建spring-boot
简单应用程序并为其创建docker image
:
FROM openjdk:8
EXPOSE 8080
ADD /build/libs/hello-docker-0.0.1-SNAPSHOT.jar hello-docker.jar
ENTRYPOINT ["java", "-jar", "hello-docker.jar"]
我逐步做了什么:
1)构建我的应用程序(结果,我的hello-docker-0.0.1-SNAPSHOT.jar
出现在build
文件夹中)
2)移至Docker file
所在的目录并执行以下命令:docker build -f Dockerfile -t springdocker .
3)将此image
作为容器运行:docker run -p 8080:8080 springdocker
结果,我的应用程序成功启动。
但是现在我决定在应用程序中进行一些更改。我做到了,并尝试重复所有步骤。 1-> 2-> error
在第2步中,创建了新映像,而旧映像处于活动状态。原来,我需要停止旧的并且开始新的。
这不舒服。我凭直觉理解这不是应该如何工作。我不了解如何正确更新容器。我经常更改我的应用程序,如果我需要停止容器,然后创建一个映像,然后启动它-这不是方便,而是一个麻烦。同样成功,我可以停止我的应用程序并在没有docker的情况下启动一个新应用程序。我了解我不了解它是如何工作的,我希望有人向我解释如何做。
答案 0 :(得分:0)
您可以使用docker-compose,这将节省您很多时间。
只需在与Dockerfile相同的文件夹中写入一个docker-compose.yml文件:
version: '3.5'
services:
yourapplication:
build: . -> this is the location of your dockerfile
image: yourapplication_imagename
container_name: yourapplication_containername
ports:
- "8080:8080"
tty: true
而且,要更新应用程序,您只需运行:
docker-compose build --no-cache yourapplication
docker-compose up -d
这将重新创建图像,并将容器替换为更新后的应用程序。
没有docker-compose:您已经对此here
有很好的了解答案 1 :(得分:0)
您应该使构建过程自动化。如果此过程的理想结果是docker映像,则在创建.jar
之后,您的自动构建过程不应停止幸运的是,有一个很好的教程,用于使用不同的构建工具(Maven,Gradle)构建用于运行Spring Boot应用程序的Docker映像: https://spring.io/guides/gs/spring-boot-docker/
最后,您将可以仅使用
将应用程序部署到Docker映像中。C:\Blockchain\IBM_Blockchain\Chaincode_Samples\marbles\node_modules\pkcs11js>if not defined npm_config_node_gyp (node "C:\Users\dany.vandermeij\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Users\dany.vandermeij\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
gyp ERR! configure error
gyp ERR! stack Error: Command failed: C:\Users\dany.vandermeij\AppData\Local\Programs\Python\Python37-32\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack File "<string>", line 1
gyp ERR! stack import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack ^
gyp ERR! stack SyntaxError: invalid syntax
gyp ERR! stack
gyp ERR! stack at ChildProcess.exithandler (child_process.js:275:12)
gyp ERR! stack at emitTwo (events.js:126:13)
gyp ERR! stack at ChildProcess.emit (events.js:214:7)
gyp ERR! stack at maybeClose (internal/child_process.js:925:16)
gyp ERR! stack at Socket.stream.socket.on (internal/child_process.js:346:11)
gyp ERR! stack at emitOne (events.js:116:13)
gyp ERR! stack at Socket.emit (events.js:211:7)
gyp ERR! stack at Pipe._handle.close [as _onclose] (net.js:557:12)
gyp ERR! System Windows_NT 10.0.17134
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\dany.vandermeij\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Blockchain\IBM_Blockchain\Chaincode_Samples\marbles\node_modules\pkcs11js
gyp ERR! node -v v8.11.4
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! pkcs11js@1.0.17 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the pkcs11js@1.0.17 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\dany.vandermeij\AppData\Roaming\npm-cache\_logs\2019-01-31T10_05_52_209Z-debug.log