如何在docker容器中正确使用apache运行django

如何在docker容器中正确使用apache运行django,django,docker,apache,docker-compose,Django,Docker,Apache,Docker Compose,因此,我一直在尝试将我的Django应用程序与apache停靠在一个容器上,我不断收到这个错误 无效命令“WSGIProcessGroup”,可能拼写错误或由服务器配置中未包含的模块定义 我试图用apt和pip安装mod_wsgi,但结果还是一样 这是我的文件 FROM httpd:2.4 ADD ./requirements.txt ./ RUN apt-get update \ && apt-get install -y \ python3-pip python3-venv

因此,我一直在尝试将我的Django应用程序与apache停靠在一个容器上,我不断收到这个错误
无效命令“WSGIProcessGroup”,可能拼写错误或由服务器配置中未包含的模块定义

我试图用apt和pip安装mod_wsgi,但结果还是一样

这是我的文件

FROM httpd:2.4

ADD ./requirements.txt ./
RUN apt-get update \
&& apt-get install -y \
python3-pip python3-venv \
libapr1 libapr1-dev \
libaprutil1-dev \
libapache2-mod-wsgi \
&& python3 -m venv /.cp \
&& /.cp/bin/pip install --no-cache-dir -r requirements.txt \
&& rm -rf /var/lib/apt/lists/*
requirements.txt

django
mod-wsgi
psycopg2-binary
djangorestframework
markdown
django-filter
我的自定义vhost文件

<VirtualHost *:80>
    serverAdmin svenikia@taskmaster.com
    DocumentRoot "/usr/local/apache2/htdocs/webapp"
    Servername www.webapp.io
    ServerAlias webapp.io
    ErrorLog "/var/log/apache2/error.log"
    CustomLog "/var/log/apache2/access.log" combined
    Alias /static /capstone/static
    <Directory "/usr/local/apache2/htdocs/webapp/static">
        Require all granted
        AllowOverride None
    </Directory>
    <Directory "/usr/local/apache2/htdocs/webapp/webapp">
        <Files wsgi.py>
            AllowOverride None
            Require all granted
        </Files>
    </Directory>
    WSGIProcessGroup webapp_project
    WSGIDaemonProcess webapp_project python-path=/webapp python-home=/.env
    WSGIScriptAlias / /usr/local/apache2/htdocs/webapp/webapp/wsgi.py
</VirtualHost>

最初我的想法是有3个容器,一个用于postgres,第二个用于django,第三个用于apache。但在多次失败尝试之后,我只使用了两个容器,一个用于postgres,另一个用于生成virtualenv、django应用程序和apache。任何帮助都会很好,谢谢你

你所做的是正确的,但它缺少一些定制的东西:

  • 首先,您需要将django静态文件链接到ApacheWeb服务器,为此,您需要在docker-compose.yml上为django部分添加一个服务
  • 之后,使用volume可以将django输出链接为apache的输入


    如需了解更多详细信息,请遵循此

    谢谢,朋友,我将尝试遵循上述示例,如果我成功,我将标记您的解决方案不客气,目标是您可以解决您的问题。
    version: '2'
    services:
            postgres:
                    image: postgres:13.1-alpine
                    environment:
                            POSTGRES_USER: postgres
                            POSTGRES_PASSWORD: postgres
                            POSTGRES_DB: parking
                    restart: always
                    container_name: db
            apache:
                    build : ./Django
                    image: web:1.0
                    container_name: web
                    ports:
                            - "8080:80"
                    volumes:
                            - ./my-httpd.conf:/usr/local/apache2/conf/httpd.conf
                            - ./Django/web.conf:/usr/local/apache2/conf/extra/httpd-vhosts.conf
                            - ./Django/web:/usr/local/apache2/htdocs/my-web
    networks:
            default:
                    external:
                            name: network