在Dockerfile中从源代码安装python包
我目前正在使用docker compose来使用芹菜的一个实例,芹菜是python队列管理器。然而,当我扩展代码时,我希望能够使用谷歌的工具或软件包。但是,如果您使用的是python-3.6:alpine(如本文所述),则必须从源代码安装或安装工具。我曾尝试使用非阿尔卑斯版本的python,但后来我遇到了芹菜的问题,所以我认为从源代码安装是前进的方向 我对使用Docker比较陌生,所以我很难做到这一点。只需添加在Dockerfile中从源代码安装python包,python,docker,docker-compose,dockerfile,Python,Docker,Docker Compose,Dockerfile,我目前正在使用docker compose来使用芹菜的一个实例,芹菜是python队列管理器。然而,当我扩展代码时,我希望能够使用谷歌的工具或软件包。但是,如果您使用的是python-3.6:alpine(如本文所述),则必须从源代码安装或安装工具。我曾尝试使用非阿尔卑斯版本的python,但后来我遇到了芹菜的问题,所以我认为从源代码安装是前进的方向 我对使用Docker比较陌生,所以我很难做到这一点。只需添加运行git clone-b masterhttps://github.com/goog
运行git clone-b masterhttps://github.com/google/or-tools
这里提到的其余命令:到Dockerfile不起作用。它说git不是命令,但如果我尝试使用运行sudo apt install git
安装它,它会告诉我sudo不是命令
我是否需要在dockerfile中添加其他部分,例如:
FROM: ubuntu
RUN git clone -b master https://github.com/google/or-tools
如果是这样,那么正确的方法是什么,并确保它链接到Dockerfile的其他部分,以便我可以在python代码中使用或使用工具
DOCKERFILE:
FROM python:3.6-alpine
ENV CELERY_BROKER_URL redis://redis:6379/0
ENV CELERY_RESULT_BACKEND redis://redis:6379/0
ENV C_FORCE_ROOT true
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD celery -A celeryExample worker --concurrency=1 --loglevel=info
DOCKER-COMPOSE:
version: '3'
services:
redis:
image: redis
ports:
- 6379:6379
celery:
build:
context: .
dockerfile: Dockerfile.celery
depends_on:
- redis
volumes:
- .:/usr/src/app
要求:
celery
redis
requests
您非常接近它,可以在同一执行过程中从其他图像中获取依赖项。
请尝试以下Dockerfile:
FROM ubuntu
RUN apt-get update && apt-get install -y git
RUN git clone -b master https://github.com/google/or-tools
FROM python:3.6-alpine
ENV CELERY_BROKER_URL redis://redis:6379/0
ENV CELERY_RESULT_BACKEND redis://redis:6379/0
ENV C_FORCE_ROOT true
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD celery -A celeryExample worker --concurrency=1 --loglevel=info
它说git不是命令,但如果我尝试使用runsudoapt install git安装它,它会告诉我sudo不是命令
名为python:3.6-alpine
的基本图像公开了用户“root”,这意味着不需要sudo(您已经是root)。在Docker中,您几乎从不使用sudo或使用密码登录用户,因为这很麻烦,Docker还有其他处理用户的方法,例如USER
语法:
FROM python:3.6-alpine
USER root
# All commands will be run as user root
...
USER foo
# All commands will be run as user foo
...
python:3.6-alpine
没有apt
,而是使用apk
。请在此处阅读有关阿尔卑斯山图像的更多信息:
在不使用sudo的情况下使用运行apk add git
:
FROM python:3.6-alpine
RUN apk add git
...
这样做的正确方法是什么,并确保它链接到Dockerfile的另一部分,以便我可以在python代码中使用或使用工具
我不知道正确的方法是什么,但我会尝试在Dockerfile中使用您正在使用的基本映像构建所需的依赖项