我嘗試使用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