首页 > 解决方案 > 如何使用非 root 用户 django 项目在 docker 容器中添加 django-crontab

问题描述

使用 python:3.9-alpine3.13 处理在 docker-container 上运行的 Django 项目

FROM python:3.9-alpine3.13
LABEL maintainer=<do not want to show>

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /requirements.txt
COPY ./app /app
COPY ./scripts /scripts

WORKDIR /app
EXPOSE 8000

RUN python -m venv /py && \
    apk add --update --no-cache postgresql-client && \
    apk add --update --no-cache --virtual .tmp-deps \
        build-base postgresql-dev musl-dev gcc python3-dev bash openssl-dev libffi-dev libsodium-dev linux-headers && \
    apk add jpeg-dev zlib-dev libjpeg && \
    apk add --update busybox-suid && \
    apk --no-cache add dcron libcap && \
    /py/bin/pip install --upgrade pip && \
    /py/bin/pip install -r /requirements.txt && \
    apk del .tmp-deps && \
    adduser --disabled-password --no-create-home app &&\
    mkdir -p /vol/web/static && \
    chown -R app:app /vol && \
    chmod -R 755 /vol && \
    chmod -R +x /scripts 

ENV PATH="/scripts:/py/bin:$PATH"

USER app

CMD ["run.sh"]

我使用本教程进行实施,但我没有这个错误是因为这个,因为

我收到这个错误。

sumit@LAPTOP-RT539Q9C MINGW64 ~/Desktop/RentYug/rentyug-backend-deployment (main)
$ docker-compose  run --rm app sh -c "python manage.py crontab show"
WARNING: Found orphan containers (rentyug-backend-deployment_proxy_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Creating rentyug-backend-deployment_app_run ... done
/bin/sh: /usr/bin/crontab: Permission denied
Currently active jobs in crontab:

我用这些线

apk add --update busybox-suid && \
apk --no-cache add dcron libcap && \

标签: djangodockeralpinedjango-crontab

解决方案


我找到了我的答案,即 cron 应该以 root 用户身份运行。我在那里找到了答案。


推荐阅读