运行docker映像时,出现错误,因为该映像找不到应该存在的文件。
错误
C:\Users\..\web>docker run mmy-app-1.0-snapshot:latest
Oops, cannot start the server.
ch.qos.logback.core.joran.spi.JoranException: Could not open URL [file:/deploy/my-app-1.0/logback_prod.xml].
我的本地计算机是一个windows 10
,我要在其上测试我的docker
映像。最终,我将其安装在google
云上的虚拟机上。该图像是我的play framework
应用程序的图像,根据本文档,该应用程序仅需要java
运行时-https://www.playframework.com/documentation/2.5.x/Deploying
应用程序的发行版将在zip中包含两个文件,一个用于linux
,另一个用于Windows的.bat
文件。我希望能够通过使用linux
在Windows计算机上运行docker run
版本。为此,我计划创建我的应用程序的docker映像。
问题1)我可以使用Docker
来创建这样的映像,使其既可以在Windows计算机上运行,也可以在云中的linux
计算机上运行吗?
问题2)我需要为linux
和windows
创建两个单独的图像吗?
我已经从https://hub.docker.com/?overlay=onboarding安装了docker desktop for windows
。我创建了以下Dockerfile
。
FROM openjdk:8
ENV APP_NAME my-app
ENV APP_VERSION 1.0-SNAPSHOT
#make a directory deploy in the container
RUN mkdir deploy
#cd to container
WORKDIR deploy
#copy from host (path relative to location of Dockerfile on host) to deploy directory. The deploy directory will have my-app-1.0.zip, logback_prod.xml and application_prod.xml
COPY target/universal/my-app-1.0.zip .
COPY conf/logback_prod.xml .
COPY conf/application_prod.conf .
#unzip deploy/my-app-1.0.zip in container
RUN unzip my-app-1.0.zip
#chmod my-app script in deploy/my-app-1.0/bin/my-app
RUN chmod +x my-app-1.0/bin/my-app
#entrypoint is deploy/....
ENTRYPOINT my-app-1.0/bin/codingjediweb -Dplay.http.secret.key=changemeplease -Dlogger.file=logback_prod.xml -Dconfig.file=application_prod.conf
dockerfile
在我的Windows笔记本电脑上的路径web
上。同一级别具有conf
和target
目录。我假设在Dockerfile
中,WORKDIR
是image
中的路径,当我使用COPY
命令时,第一个路径(源)是计算机上的本地路径,而第二个路径(目标)是图像中的路径。
问题3)当我运行docker run my-app-1.0-snapshot:latest
时,出现在问题开头的错误提示。为什么找不到文件?我注意到url
是/deploy/....
。正如我将WORKDIR
设置为.
一样,它不是./deploy
吗?
答案 0 :(得分:0)
问题是在ENTRYPOINT
中,我需要指定正确的路径-ENTRYPOINT my-app-1.0 / bin / codingjediweb -Dplay.http.secret.key = changemeplease -Dlogger.file = deploy / logback_prod .xml -Dconfig.file = deploy / application_prod.conf
似乎在-Dlogger.file和-Dconfig.file参数中未使用WORKDIR。