【发布时间】:2022-02-11 18:23:37
【问题描述】:
我有以下 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
【问题讨论】:
-
当你执行到容器中时,你确定它在没有脚本的情况下工作吗?
-
不,抱歉,我并不清楚。带有
exec的那个是我手动手动 进行的。由于我想编写脚本并且只需要在构建命令期间启动容器,我想使用run -
它是否与 exec 一起工作?
-
它适用于 exec 是的。逐步在终端窗口中手动操作。在 docker 容器中启动终端会话,
npm在那里工作 -
手动操作时,容器如何保持活力?您尚未定义 CMD 或 ENTRYPOINT,因此它使用 'bash' 作为来自基本 Ubuntu 映像的命令。由于它不是在交互模式下运行,它会立即退出。