我尝试使用Docker在网上放置一个Flask网站。所以,我创建了一个Dockerfile,一个docker-compose,现在我可以用我的域名在线查看我的网站。虚拟主机:将一个Flask网站与Docker放在一起
尽管我的虚拟主机,我无法通过使用子域和无端口“:5000”访问我的网站。这个虚拟主机似乎完全被忽略了!
Dockerfile:
蟒蛇:最新
RUN apt-get update && apt-get install -y apache2 \
libapache2-mod-wsgi \
build-essential \
python \
python-dev \
python-pip \
vim \
&& apt-get clean \
&& apt-get autoremove
RUN apt-get install -y wget
COPY src /var/www/flask
RUN apt-get install -y python-requests
RUN pip install flask-user
RUN pip install -r var/www/flask/myapp/requirements.txt
COPY src/myapp/myapp.conf /etc/apache2/sites-available/myapp.conf
RUN a2enmod rewrite
RUN a2enmod wsgi
RUN a2enmod proxy_http
RUN a2ensite myapp.conf
RUN service apache2 restart
EXPOSE 80
泊坞窗,compose.yml
flask:
image: flask:latest
command: python /var/www/flask/myapp/__init__.py
volumes:
- "/root/workspace/python/src/:/var/www/flask"
ports:
- "5000:5000"
虚拟主机
<VirtualHost *:80>
ServerName my.domain.guru
WSGIDaemonProcess myapp
WSGIScriptAlias//var/www/flask/myapp/myapp.wsgi
<Directory /var/www/flask/myapp>
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
ProxyPass/http://localhost:5000/
ProxyPassReverse/http://localhost:5000/
ProxyPreserveHost On
</VirtualHost>
__init__.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "test"
if __name__ == "__main__":
app.run(host='0.0.0.0')
有了这些URL,我可以看到我的网站:
- “my.domain.guru:5000”
- “域。大师:5000“(为什么?)
但是,我只想访问我的网站只有这个URL:“my.domain.guru”。如果我尝试用这个网址,我有以下错误信息:
故宫
您没有权限访问/在此服务器上。
如何做到这一点?
(我不能用端口80,因为它已经被其他网站)
禁止容器也会发生吗?我认为这是因为你有其他东西绑定到端口80 – kewne
不是你的问题,但这条线没有任何意义,因为Apache在构建期间没有运行:“RUN service apache2 restart”,你可以删除它。 – Robert