我正在尝试使用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>
这是我的Dockerfile
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的新手,我是否遗漏了Dockerfile并获得了许可?您是否也可以在Docker中分享如何使用apache2托管Django项目的一些链接,因为我无法在网上找到好的内容。
答案 0 :(得分:1)
首先:
<Directory "/code/ilab/backup">
应该是:
<Directory "/code/demo/app">
一般来说,尝试从头开始构建Docker镜像是一个坏主意,因为有很多东西要学习以正确的方式做事。例如,您正在做的另一个问题是将日志发送到容器中的文件时应该将它们发送到stdout / stderr,以便Docker可以捕获它们。
您可能希望尝试找到预先构建的图像,这些图像可以正确地为您设置所有内容,并使部署应用程序变得相对容易。作为一个例子,看看事情是如何完成的: