我正在嘗試創建一個包含帶有 Django 的 Apache Webserver 的 Docker 映像。我在生產環境中使用虛擬環境,但不知道如何在 Dockerfile 中激活它。
這是我的 Dockerfile:
FROM ubuntu/apache
ARG GITLAB_USERNAME
ARG GITLAB_TOKEN
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y python3 python3-pip apache2 libapache2-mod-wsgi-py3 libpq-dev git
RUN pip3 install virtualenv
RUN mkdir -p /var/www
WORKDIR "/var/www"
RUN git clone https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@gitlab.com/g5362/gnsave.git
RUN mv gnsave/Netto\ umgeschrieben/ ./GNSave
RUN rm -r gnsave
WORKDIR "/GNSave/"
RUN virtualenv gnsave
RUN source gnsave/bin/activate && pip install -r requirements.txt
RUN a2enmod wsgi
RUN chown -R www-data:www-data /var/www/GNSave
RUN chmod -R u w /var/www/GNSave
RUN chmod -R 775 /var/www/GNSave/assets
COPY django.conf /etc/apache2/sites-available/django.conf
RUN a2dissite 000-default
RUN a2ensite django
RUN /etc/init.d/apache2 restart
我得到的錯誤訊息是:
/bin/sh: 1: source: not found
我的問題是我是否應該將 django 和 apache 拆分為兩個 docker 并組合它們,或者我的 Dockerfile 中是否有激活 venvs 的解決方法。
提前致謝!
uj5u.com熱心網友回復:
為了解釋您的錯誤訊息,這是因為默認情況下,Docker 使用/bin/sh. source是一個 Bash 命令。你有兩個選擇:
SHELL ["/bin/bash", "-c"]通過在 RUN 命令之前添加指定使用 Bash 作為 shell 來運行這些命令- 使用點運算子:
RUN . gnsave/bin/activate && pip install -r requirements.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456144.html
標籤:Python django 码头工人 码头工人撰写 dockerfile
下一篇:無法從JSON文本中提取必填欄位
