Docker PowerShell映像中的Import-Module

时间:2017-11-19 23:09:57

标签: powershell docker dockerfile

我正在构建一个基于// LeftSidebar import React, { Component } from 'react'; import Drawer from 'material-ui/Drawer'; import MenuItem from 'material-ui/MenuItem'; import IconButton from 'material-ui/IconButton'; import NavigationClose from 'material-ui/svg-icons/navigation/close'; class LeftNavBar extends Component { /** unsure if necessary here **/ constructor(props, state) { super(props, state) this.state = { leftBarOpen : this.props.leftBarOpen } } /** closing functionality works **/ close = () => { this.setState({leftBarOpen: false}); } render() { return ( <Drawer open={this.state.leftBarOpen}> <IconButton onClick={this.close}> <NavigationClose /> </IconButton> <MenuItem>Menu Item</MenuItem> <MenuItem>Menu Item 2</MenuItem> </Drawer> ); } } export default LeftSidebar; 的Docker镜像。它构建正确,没有任何错误,但是当我去使用它时,它没有我在Dockerfile中声明的导入模块(这是来自图像中克隆的GitHub repo的psd1文件。

我尝试了一下简单导入微软的PowerShell管理(如下所示),它也没有导入。我以交互方式运行图像并逐个输出命令,导入的所有内容都很好,所以我不知道为什么它不能通过Dockerfile构建本身工作。

microsoft/powershell:ubuntu16.04

示例psd1文件

FROM microsoft/powershell:ubuntu16.04
WORKDIR /workdir

RUN pwsh -command "Import-Module Microsoft.PowerShell.Management"

CMD [ "pwsh", "-Command", "Get-Module" ]

1 个答案:

答案 0 :(得分:1)

因为它发生在错误的“上下文”中。为了使其按照您希望的方式工作,您需要在1 PowerShell会话中使用这两个命令:

pwsh -command "Import-Module Microsoft.PowerShell.Management; Get-Module"

否则它会创建一个运行该命令的层,但是当powershell停止时,所有导入都会消失(当层完成时,它会关闭容器,因此它不会保留会话状态,只有os状态)。 / p>

我的dockerfile(工作示例):

FROM microsoft/powershell:ubuntu16.04
RUN pwsh -c "Install-Module AzureRM.netcore -Force"

CMD [ "pwsh" ]