我有这个Dockerfile:
FROM python:3.6-alpine
FROM ubuntu
FROM alpine
RUN apk update && \
apk add --virtual build-deps gcc python-dev musl-dev
RUN apt-get update && apt-get install -y python-pip
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "main.py"]
并且抛出错误/bin/sh: apt-get: not found
。
我以为apt-get
软件包是我要使用的Ubuntu映像的一部分
第二行,但它给了我这个错误。
我该如何解决?
答案 0 :(得分:1)
答案 1 :(得分:0)
正如tkausl所说:您只能使用一个基本映像(一个FROM)。
alpine的软件包管理器是apk
而不是apt-get
。您必须使用apk来安装软件包。但是,点子已经可用。
Dockerfile应该工作:
FROM python:3.6-alpine
RUN apk update && \
apk add --virtual build-deps gcc python-dev musl-dev
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "main.py"]
答案 2 :(得分:0)
您使用的图像最有可能是Alpine, 所以你不能使用apt-get 您可以使用Ubuntu的软件包管理器。
您可以使用
client_credentials
和apk update
答案 3 :(得分:0)
单个 FROM
中可以使用多个 Dockerfile
行。
见discussion和Multi stage tutorial
使用Python Alpine,加上Ubuntu,再加上Ubuntu,大概是多余的。 Python Alpine 应该足够了,因为它内部使用了 Alpine。
我遇到了类似的问题,不是 apk
而是 apt-get
。
FROM node:14
FROM jekyll/jekyll
RUN apt-get update
RUN apt-get install -y \
sqlite
错误:
/bin/sh: apt-get: not found
如果我改变了顺序,那么它就起作用了。
FROM node:14
RUN apt-get update
RUN apt-get install -y \
sqlite
FROM jekyll/jekyll
请注意,正如我在上面添加的第一个链接,多个 FROM 可能会作为一项功能从 Docker 中删除。