首页 > 解决方案 > DockerFile 的一些问题

问题描述

您好,我在设置 dockerFile 时遇到问题。我想说我是docker下的新手。这是码头工人版本

C:\>docker version
Client:
Version:      18.03.1-ce
API version:  1.37
Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:12:48 2018
 OS/Arch:      windows/amd64
 Experimental: false
 Orchestrator: swarm`


Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.24)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:21:42 2018
  OS/Arch:      windows/amd64
  Experimental: false

我创建了一个 docker 映像,在其中复制了一个可执行文件。我设法通过启动它在容器中运行 .exe。目前我想使用 dockerFile 使事情自动化。我的镜像叫做bt1: version1它是基于microsoft/windowsservercore的。

这是我的 dockerFile 问题。

目标是启动一个容器,然后在其中修改文件 test.xml,然后启动应用程序 BT_simulator.exe。

FROM bt1:version1
WORKDIR "/BTsimulatorV1.1/release"
RUN powershell.exe
RUN "$doc = [xml](Get-Content /BTsimulatorV1.1/release/test.xml) 
&& $doc.parameters.connection.port = " " 
&& $doc.parameters.connection.ipAddress = " " 
&& $doc.parameters.Tool_EEPROM.Serial_Number = " " 
&& $doc.save("/BTsimulatorV1.1/release/test.xml") 
&& BT_simulator.exe

我不必达到预期的行为。你能帮我吗?

标签: powershelldockerdocker-composedockerfile

解决方案


xml 文件的操作不应在 Dockerfile 中完成。Dockerfile 在镜像构建期间只运行一次。您需要的是一个 ENTRYPOINT 脚本,它将执行文件操作并启动 exe。

应该删除从 RUN powershell.exe 开始的所有内容。该脚本应放入 .ps 脚本并添加到图像中。然后用 ENTRYPOINT 调用它。


推荐阅读