powershell - 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
我不必达到预期的行为。你能帮我吗?
解决方案
xml 文件的操作不应在 Dockerfile 中完成。Dockerfile 在镜像构建期间只运行一次。您需要的是一个 ENTRYPOINT 脚本,它将执行文件操作并启动 exe。
应该删除从 RUN powershell.exe 开始的所有内容。该脚本应放入 .ps 脚本并添加到图像中。然后用 ENTRYPOINT 调用它。
推荐阅读
- android - 有安卓键盘监听器吗?
- terminal - 如何在不丢失分辨率的情况下让 neofetch girl 显示?
- c# - 如何在 c# Winforms 中从另一个窗体中捕获或获取 e.cancel 属性
- sql-server-2019 - 可以在不实际拆分为两个表的情况下垂直分区表吗?
- dockerfile - 如何在字符串 docker 中使用环境变量
- python - 我可以在 TRY 和 EXCEPT 子句中添加 IF 子句吗
- python - python-binance order_limit_buy() APIError(code=-1013): Filter failure: LOT_SIZE
- java - org.hibernate.tool.schema.spi.CommandAcceptanceException:执行 DDL 创建表索引时出错
- r - 根据条件创建新列
- web-services - 使用 API 在 adobe connect 中获取所有会议参与者的信息