2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個贊
您已經(jīng)非常接近它了,可以在同一執(zhí)行中從其他圖像中獲取依賴關(guān)系。
嘗試以下 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

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個贊
它說 git 不是命令,但是如果我嘗試使用 RUN sudo apt install git 安裝它,它會告訴我 sudo 不是命令。
名為的基礎(chǔ)映像python:3.6-alpine公開了用戶“root”,這意味著不需要 sudo(您已經(jīng)是 root)。在 Docker 中,您幾乎從不使用 sudo 或使用密碼登錄,因?yàn)檫@很麻煩,而且 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。在此處閱讀有關(guān) alpine 圖像的更多信息:https ://hub.docker.com/_/alpine
不使用RUN apk add gitsudo:
FROM python:3.6-alpine
RUN apk add git
...
這樣做的正確方法是什么,并確保它鏈接到我的 Dockerfile 的另一部分,以便我可以在 python 代碼中使用 OR-tools?
我不知道正確的方法是什么,但我會嘗試使用您正在使用的基本映像在 Dockerfile 中構(gòu)建所需的依賴項(xiàng)。
添加回答
舉報