我目前正在使用docker-compose来使用python队列管理器Celery的实例。但是,在扩展代码时,我希望能够使用Google的OR工具包。但是,如果您使用的是python-3.6:alpine,则必须从源代码安装OR-tools(如此处讨论:pip install ortools: No matching distribution - Alpine)。我曾尝试使用非高山版本的python,但随后遇到Celery问题,因此我认为从源代码安装是前进的方向。
我相对不熟悉Docker,因此很难做到这一点。仅将RUN git clone -b master https://github.com/google/or-tools
和此处提到的其余命令:https://developers.google.com/optimization/install/python/source_linux添加到Dockerfile中是行不通的。它说git不是命令,但是如果我尝试使用RUN sudo apt install git
来安装它,则会告诉我sudo不是命令。
我需要在我的dockerfile中添加另一部分吗?
FROM: ubuntu
RUN git clone -b master https://github.com/google/or-tools
如果是,执行此操作的正确方法是什么,并确保将其链接到我的Dockerfile的另一部分,以便可以在python代码中使用OR工具?
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
答案 0 :(得分:0)
您非常接近它,可以在同一执行中从其他映像中获取依赖项。
尝试以下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
答案 1 :(得分:0)
它说git不是命令,但是如果我尝试使用RUN sudo apt 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
。在此处阅读有关高山图片的更多信息:https://hub.docker.com/_/alpine
使用RUN apk add git
而不使用sudo:
FROM python:3.6-alpine
RUN apk add git
...
执行此操作的正确方法是什么,并确保将其链接到我的Dockerfile的另一部分,以便我可以在python代码中使用OR工具?
我不知道正确的方法是什么,但是我会尝试使用您正在使用的基本映像在Dockerfile中构建所需的依赖项。