节点安装在 docker 容器中但未安装 npm

时间:2021-04-14 20:35:33

标签: docker npm dockerfile

我有这个 DockerFile

FROM docker:17.12.0-ce as static-docker-source

FROM ubuntu:18.04
FROM python:3.8-slim-buster

ARG CLOUD_SDK_VERSION=335.0.0
ENV CLOUD_SDK_VERSION=$CLOUD_SDK_VERSION
ENV PATH "$PATH:/opt/google-cloud-sdk/bin/"
COPY --from=static-docker-source /usr/local/bin/docker /usr/local/bin/docker
RUN apt-get -qqy update && apt-get install -qqy \
    curl \
    gcc \
    apt-transport-https \
    lsb-release \
    openssh-client \
    git \
    gnupg && \
pip install crcmod && \
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \
echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" > /etc/apt/sources.list.d/google-cloud-sdk.list && \
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
apt-get update && \
apt-get install -y google-cloud-sdk=${CLOUD_SDK_VERSION}-0 \
    google-cloud-sdk-app-engine-python=${CLOUD_SDK_VERSION}-0 \
    google-cloud-sdk-app-engine-python-extras=${CLOUD_SDK_VERSION}-0 \
    google-cloud-sdk-cbt=${CLOUD_SDK_VERSION}-0 \
    kubectl && \
gcloud --version && \
docker --version && kubectl version --client
VOLUME ["/root/.config"]

RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN curl -sL https://sentry.io/get-cli/ | bash -

RUN apt-get install -y nodejs build-essential pkg-config libcairo2-dev libjpeg-dev libgif-dev

ADD requirements.txt /
ADD requirements-prod.txt /

ADD submodules /
RUN python --version
RUN pip3 install --upgrade pip

RUN pip3 install -r /requirements.txt
RUN pip3 install -r /requirements-prod.txt

当我运行 node --version 时,它返回 v10.24.0(我认为它应该是 8.x.y ....)。 当我运行 npm --version 它返回 bash: npm: command not found

节点不应该也安装npm吗?

谢谢

1 个答案:

答案 0 :(得分:1)

所以我通过更改我的 DockerFile 来修复它。

我删除了 FROM python:3.8-slim-buster,因为我读到在 dockerfile 上有多个“FROM”可能会导致冲突。我像这样用apt安装了python:

RUN apt-get -qqy update && apt-get install -qqy \
    curl \
    gcc \
    python3.8 \
    python3-pip \
    python3.8-dev \

然而,它对我来说并不完美,因为我现在在python 3下有python3.6.x,在python下有python 2.7.x,我必须在需要时指定python3.8...


我的新 DockerFile:

FROM docker:17.12.0-ce as static-docker-source

FROM ubuntu:18.04

ARG CLOUD_SDK_VERSION=335.0.0
ENV CLOUD_SDK_VERSION=$CLOUD_SDK_VERSION
ENV PATH "$PATH:/opt/google-cloud-sdk/bin/"
COPY --from=static-docker-source /usr/local/bin/docker 
/usr/local/bin/docker
RUN apt-get -qqy update && apt-get install -qqy \
    curl \
    gcc \
    python3.8 \
    python3-pip \
    python3.8-dev \
    apt-transport-https \
    lsb-release \
    openssh-client \
    git \
    gnupg && \
pip3 install crcmod && \
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \
echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" > /etc/apt/sources.list.d/google-cloud-sdk.list && \
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
apt-get update && \
apt-get install -y google-cloud-sdk=${CLOUD_SDK_VERSION}-0 \
    google-cloud-sdk-app-engine-python=${CLOUD_SDK_VERSION}-0 \
    google-cloud-sdk-app-engine-python-extras=${CLOUD_SDK_VERSION}-0 \
    google-cloud-sdk-cbt=${CLOUD_SDK_VERSION}-0 \
    kubectl && \
gcloud --version && \
docker --version && kubectl version --client
VOLUME ["/root/.config"]

RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN curl -sL https://sentry.io/get-cli/ | bash -

RUN apt-get install -y nodejs build-essential pkg-config libcairo2-dev 
libjpeg-dev libgif-dev
RUN node --version
RUN npm --version
RUN python --version
ADD requirements.txt /
ADD requirements-prod.txt /

ADD submodules /
RUN python --version
RUN pip3 install --upgrade pip

RUN pip3 install -r /requirements.txt
RUN pip3 install -r /requirements-prod.txt
相关问题