在 docker 中无权访问此服务器 (apache2) 上的 /
Don't have permission to access / on this server (apache2) in docker
我正在尝试使用 apache2 服务器在 Docker 中托管 Django 项目。我手动启动 apache 服务器并能够访问默认站点。但是,当我配置 000-default.config 文件时出现错误您无权访问此服务器上的/。
这是我的 000-default.config 文件
<VirtualHost *:8000>
DocumentRoot /code/demo
WSGIScriptAlias / /code/demo/app/wsgi.py
<Directory "/code/demo/backup">
Require all granted
</Directory>
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
这是我的Docker文件
FROM ubuntu
MAINTAINER kketan@somemail.com
RUN apt-get update && apt-get -y --force-yes install build-essential
RUN apt-get -y --force-yes install python python-pip python-dev
RUN apt-get -y --force-yes install libffi-dev libssl-dev
RUN apt-get install -y --force-yes libmysqlclient-dev
RUN mkdir /code
ADD evn_packages.txt /code
ADD python_packages.txt /code
RUN apt-get install -y apache2
RUN apt-get install -y mariadb-server
RUN pip install --upgrade pip
RUN pip install -r python_packages.txt
RUN apt-get install -y vim
ADD django /code
EXPOSE 8000
RUN apt-get install -y libapache2-mod-wsgi
我正在从上面显示的同一目录导入 Django 项目。即使使用默认的 Django 服务器也能够 运行 项目但无法在浏览器中访问它。我还将端口侦听更改为 8000,因为它在默认端口 80 上不起作用。
我是 docker 的新手,我是否缺少 Docker 文件中的权限?你也可以分享一些链接如何在 Docker 中使用 apache2 托管 Django 项目,因为我无法在网上找到好的内容。
首先:
<Directory "/code/ilab/backup">
应该是:
<Directory "/code/demo/app">
一般来说,尝试自己从头开始构建一个 Docker 图像是个坏主意,因为有很多东西需要学习如何以正确的方式做事。例如,您正在做的事情的另一个问题是在应该将日志发送到 stdout/stderr 时将日志发送到容器中的文件,以便 Docker 可以捕获它们。
您可能想尝试找到预构建的映像,这些映像可以为您正确设置所有内容并使部署应用程序变得相对容易。作为一个例子,看看事情是如何完成的:
我正在尝试使用 apache2 服务器在 Docker 中托管 Django 项目。我手动启动 apache 服务器并能够访问默认站点。但是,当我配置 000-default.config 文件时出现错误您无权访问此服务器上的/。
这是我的 000-default.config 文件
<VirtualHost *:8000>
DocumentRoot /code/demo
WSGIScriptAlias / /code/demo/app/wsgi.py
<Directory "/code/demo/backup">
Require all granted
</Directory>
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
这是我的Docker文件
FROM ubuntu
MAINTAINER kketan@somemail.com
RUN apt-get update && apt-get -y --force-yes install build-essential
RUN apt-get -y --force-yes install python python-pip python-dev
RUN apt-get -y --force-yes install libffi-dev libssl-dev
RUN apt-get install -y --force-yes libmysqlclient-dev
RUN mkdir /code
ADD evn_packages.txt /code
ADD python_packages.txt /code
RUN apt-get install -y apache2
RUN apt-get install -y mariadb-server
RUN pip install --upgrade pip
RUN pip install -r python_packages.txt
RUN apt-get install -y vim
ADD django /code
EXPOSE 8000
RUN apt-get install -y libapache2-mod-wsgi
我正在从上面显示的同一目录导入 Django 项目。即使使用默认的 Django 服务器也能够 运行 项目但无法在浏览器中访问它。我还将端口侦听更改为 8000,因为它在默认端口 80 上不起作用。
我是 docker 的新手,我是否缺少 Docker 文件中的权限?你也可以分享一些链接如何在 Docker 中使用 apache2 托管 Django 项目,因为我无法在网上找到好的内容。
首先:
<Directory "/code/ilab/backup">
应该是:
<Directory "/code/demo/app">
一般来说,尝试自己从头开始构建一个 Docker 图像是个坏主意,因为有很多东西需要学习如何以正确的方式做事。例如,您正在做的事情的另一个问题是在应该将日志发送到 stdout/stderr 时将日志发送到容器中的文件,以便 Docker 可以捕获它们。
您可能想尝试找到预构建的映像,这些映像可以为您正确设置所有内容并使部署应用程序变得相对容易。作为一个例子,看看事情是如何完成的: