【问题标题】:django and gurobi in docker have permission issuesdocker 中的 django 和 gurobi 存在权限问题
【发布时间】:2022-01-15 06:41:20
【问题描述】:

我正在尝试为 Django + Gurobi 创建一个 docker 映像。

  • 容器默认以root身份运行。
  • Gurobi 不想以 root 身份运行,因为许可证已颁发给非 root 用户。
  • 如果切换到非 root,Django 的 python 会抱怨“尝试使用 /db.sqlite3 编写只读数据库”。
  • chown+chmod 只是 /apps、/db.sqlite3 和 /usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3 没有帮助。
  • 如果我 chown 和 chmod 777 整个容器,问题似乎就消失了:坏主意

解决办法是什么?下面是 Dockerfile

FROM python:3.9

COPY . .
ADD data .

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

ENV APP_USER=user32
ENV APP_HOME=/home/$APP_USER

# install python dependencies
RUN pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --upgrade pip 

RUN pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --no-cache-dir -r requirements.txt


RUN apt-get update && apt-get install -y inetutils-ping

RUN tar xvzf gurobi9.5.0_linux64.tar.gz
ENV GUROBI_HOME /gurobi950/linux64
RUN cd /gurobi950/linux64 && python setup.py install
RUN rm gurobi9.5.0_linux64.tar.gz

RUN groupadd -r $APP_USER && \
    useradd -r -g $APP_USER -d $APP_HOME -s /sbin/nologin -c "Docker image user" $APP_USER

    
ENV TZ 'America/Los_Angeles'
RUN echo $TZ > /etc/timezone && apt-get update && \
    apt-get install -y tzdata && \
    rm /etc/localtime && \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
    dpkg-reconfigure -f noninteractive tzdata && \
    apt-get clean
        
#RUN chown -R $APP_USER:$APP_USER $APP_HOME
#RUN chown -R $APP_USER:$APP_USER /apps/
#RUN chown -R $APP_USER:$APP_USER /data/
#RUN chown -R $APP_USER:$APP_USER /gurobi950/
#RUN chown -R  $APP_USER:$APP_USER  /usr/local/lib/python3.9/
#RUN chown -R  $APP_USER:$APP_USER  /db.sqlite3
#RUN chmod -R 777 /db.sqlite3
#RUN chmod -R 777 /apps
#RUN chmod -R 777 /usr/local/lib/python3.9
#RUN chmod -R 777 /gurobi950
#RUN chown -R $APP_USER:$APP_USER /
#RUN chmod -R 777 /

ENV GRB_LICENSE_FILE /gurobi.lic
ENV LD_LIBRARY_PATH=/gurobi950/linux64/lib
RUN /gurobi950/linux64/bin/gurobi_cl --version

WORKDIR /

# running migrations
RUN python manage.py migrate

USER $APP_USER

# gunicorn
CMD ["gunicorn", "--config", "gunicorn-cfg.py", "core.wsgi"]

这是导航到主页时的错误

Request Method: POST
Request URL:    http://localhost/login/?next=/
Django Version: 3.2.6
Exception Type: OperationalError
Exception Value:    
attempt to write a readonly database
Exception Location: /usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py, line 423, in execute
Python Executable:  /usr/local/bin/python
Python Version: 3.9.9
Python Path:    
['/',
 '/usr/local/bin',
 '/usr/local/lib/python39.zip',
 '/usr/local/lib/python3.9',
 '/usr/local/lib/python3.9/lib-dynload',
 '/usr/local/lib/python3.9/site-packages',
 '/usr/local/lib/python3.9/site-packages/IPython/extensions']

【问题讨论】:

    标签: django docker docker-compose gurobi


    【解决方案1】:

    默认情况下,像 Gurobi 这样的商业软件不允许您在 Docker 容器中运行。请通过https://support.gurobi.com 联系 Gurobi 支持以讨论替代方案。

    【讨论】:

      猜你喜欢
      • 2021-09-14
      • 2020-06-21
      • 2016-08-15
      • 2021-01-04
      • 1970-01-01
      • 2016-04-29
      • 2011-03-10
      • 2017-05-13
      • 2019-08-22
      相关资源
      最近更新 更多