python 和同一容器中的 nodejs 的多阶段构建
Multistage build for python and nodejs in the same container
我需要在同一容器中访问 npm
和 pipenv
。我认为实现此目标的最佳方法是使用多阶段构建。
如果我这样做:
FROM python:3.7
COPY Pipfile /app/Pipfile
RUN pip install pipenv
FROM node:8
npm install
如何确保 pipenv
二进制文件不被丢弃?我需要从前一阶段复制哪些文件,以便在最终图像中使用 pipenv?
您的情况不需要多阶段构建。从基本映像 python:3.7
开始并在其中安装节点,将是直接的解决方案
FROM python:3.7
COPY Pipfile /app/Pipfile
RUN pip install pipenv
# Using Debian, as root
RUN curl -sL https://deb.nodesource.com/setup_11.x | bash -
RUN apt-get install -y nodejs
你怎么知道镜像 python:3.7
是 debian 的?
$ docker run -ti --rm python:3.7 bash
root@eb654212ef67:/# cat /etc/*release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@eb654212ef67:/#
参考:
https://github.com/nodesource/distributions/blob/master/README.md
节点安装说明
Node.js v11.x:
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_11.x | bash -
apt-get install -y nodejs
Node.js v10.x:
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs
Node.js v8.x:
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_8.x | bash -
apt-get install -y nodejs
我需要在同一容器中访问 npm
和 pipenv
。我认为实现此目标的最佳方法是使用多阶段构建。
如果我这样做:
FROM python:3.7
COPY Pipfile /app/Pipfile
RUN pip install pipenv
FROM node:8
npm install
如何确保 pipenv
二进制文件不被丢弃?我需要从前一阶段复制哪些文件,以便在最终图像中使用 pipenv?
您的情况不需要多阶段构建。从基本映像 python:3.7
开始并在其中安装节点,将是直接的解决方案
FROM python:3.7
COPY Pipfile /app/Pipfile
RUN pip install pipenv
# Using Debian, as root
RUN curl -sL https://deb.nodesource.com/setup_11.x | bash -
RUN apt-get install -y nodejs
你怎么知道镜像 python:3.7
是 debian 的?
$ docker run -ti --rm python:3.7 bash
root@eb654212ef67:/# cat /etc/*release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@eb654212ef67:/#
参考:
https://github.com/nodesource/distributions/blob/master/README.md
节点安装说明
Node.js v11.x:
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_11.x | bash -
apt-get install -y nodejs
Node.js v10.x:
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs
Node.js v8.x:
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_8.x | bash -
apt-get install -y nodejs