无法在Windows桌面上运行docker映像。如果要在Windows和Linux上运行这些图像,我是否需要其他图像

时间:2019-12-25 18:21:49

标签: docker

运行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)我需要为linuxwindows创建两个单独的图像吗?

我已经从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上。同一级别具有conftarget目录。我假设在Dockerfile中,WORKDIRimage中的路径,当我使用COPY命令时,第一个路径(源)是计算机上的本地路径,而第二个路径(目标)是图像中的路径。

问题3)当我运行docker run my-app-1.0-snapshot:latest时,出现在问题开头的错误提示。为什么找不到文件?我注意到url/deploy/....。正如我将WORKDIR设置为.一样,它不是./deploy吗?

1 个答案:

答案 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。