社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker run bash节点:未找到命令

Simon • 3 年前 • 1340 次点击  

我有下面的Dockerfile

FROM ubuntu:latest

WORKDIR /

# Without interactive dialogue
ARG DEBIAN_FRONTEND=noninteractive

# Install required packages
RUN apt-get update
RUN apt-get install -y wget gnupg2 software-properties-common git apt-utils vim dirmngr apt-transport-https ca-certificates zip

ENV NODE_VERSION=14

RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash \
    && . .$HOME/.nvm/nvm.sh \
    && nvm install $NODE_VERSION \
    && nvm alias default $NODE_VERSION \
    && nvm use default

# Install Wine from WineHQ Repository
RUN dpkg --add-architecture i386
RUN wget -qO- https://dl.winehq.org/wine-builds/Release.key | apt-key add -
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv F987672F
RUN apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'
RUN apt-get update
RUN apt-get install -y --install-recommends winehq-stable

# Installing mono
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
RUN sh -c 'echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" > /etc/apt/sources.list.d/mono-official-stable.list'
RUN apt-get update
RUN apt-get install -y mono-complete

RUN PROJECT_DIR=/root/project

WORKDIR /project

这让我可以在任何平台上构建电子应用程序。一切正常。图像构建和作为容器运行都没有问题。

然后我可以继续 手动 执行以下操作:

#build the dockerfile
docker build -t debian-wine-electron-builder:0.1 .

#run the docker image as detached container
docker run -dt --name electron-build -v ${PWD}:/project debian-wine-electron-builder:0.1

#open a bash session in the container
docker exec -it electron-build bash

#and in there execute my commands which will build me the electron application
npm install ... #and so on

现在我想创建一个bash文件来运行所有命令,使其更易于使用。因此,只需运行bash文件,它就会一个接一个地执行所有命令。 当我想使用 docker run 命令后接'bash-c“command1;command2” 我遇到了以下问题 :

#building the image
docker build -t debian-wine-electron-builder:0.1 .

#docker run following commands
docker run --name electron-build -v ${PWD}:/project debian-wine-electron-builder:0.1 bash -c "npm install... ; command2 ..."

当我试图 npm install :

bash: npm: command not found
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131068
 
1340 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Hans Kilian
Reply   •   1 楼
Hans Kilian    3 年前

当您以交互方式运行bash时 .bashrc 文件将被运行。当您直接在 docker run 命令时,bash以非交互方式运行。bashrc没有运行。

NVM使用。bashrc需要进行设置,所以它需要运行。

您可以使用 -i 选项然后它会工作,但你会得到一些警告,因为它试图做一些终端失败的事情。

docker run --name electron-build -v ${PWD}:/project debian-wine-electron-builder:0.1 bash -i -c "npm install... ; command2 ..."

如果不使用nvm动态切换节点版本,则最好在不使用nvm的情况下安装所需的节点版本。