繁体   English   中英

Docker 节点:8.16.0-alpine 错误:未找到:python2

[英]Docker node:8.16.0-alpine Error: not found: python2

我需要在我的 docker 容器中运行npm rebuild node-sass --force

但是我遇到了一个错误(即使在我已经安装了 python 之后)

Error: Can't find Python executable "python", you can set the PYTHON env variable.

这是我的 Dockerfile

FROM node:8.16.0-alpine

RUN mkdir /app
WORKDIR /app

# --no-cache: download package index on-the-fly, no need to cleanup afterwards
# --virtual: bundle packages, remove whole bundle at once, when done
RUN apk --no-cache --virtual build-dependencies add \
    python \
    make \
    g++ \
    bash \
    && npm install \
    && apk del build-dependencies

RUN npm install -g nodemon

COPY package.json package.json
COPY client/package.json client/package.json

RUN npm install
RUN npm run install:client
RUN npm uninstall node-sass && npm install node-sass
RUN npm rebuild node-sass --force

COPY . .

LABEL maintainer="Varis Darasirikul"

VOLUME ["/app/public"]

CMD npm run dev

这是我的 docker-compose

version: '3'

services:
  web:
      build: '.'
      container_name: node-web
      # env_file:
        # - '.env'
      ports:
        - '80:8000'
        - '5000:5000'
        - '3000:3000'
      volumes:
        - '.:/app'
      networks:
        - front-tier
        - back-tier
      # depends_on:
        # - redis
        # - db

networks:
  front-tier:
  back-tier:

即使我跑

docker-compose up --build --force-recreate

还是行不通

如何解决这个问题?

谢谢!

问题是根本没有安装 Python。

您的父映像node:8.16.0-alpine不包含 Python。 您可以验证这一点:

> docker run -it node:8.16.0-alpine sh
/ # python
sh: python: not found

误会可能是因为你暂时在这一行安装了python:

RUN apk --no-cache --virtual build-dependencies add \
    python \
    ...

它已添加到虚拟包build-dependencies ,但在npm install完成后,您运行apk del build-dependencies再次删除 Python!

在完成所有npm rebuild工作后,只需将卸载build-dependencies的行移至,我认为它会起作用。

因为您使用的是alpine图像,这是一个不包含python的小图像。 您可以通过运行apk add来安装python并在安装节点模块后将其删除。

FROM node:alpine

RUN apk add --no-cache --virtual .gyp \
        python \
        make \
        g++ \
    && npm install \
    && apk del .gyp

更多阅读: https : //github.com/nodejs/docker-node/issues/282

存在使用bcryptjs的替代解决方案。 性能可能并不重要,但是使用而不是应用变通方法来工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM