私はDockerとFlaskのウェブサイトをオンラインにしようとしています。だから、ドッカーファイルを作成しました。これで、私のドメイン名でウェブサイトをオンラインで見ることができます。Virtualhost:DockerとFlaskのウェブサイトをオンラインにする
私のVirtualhostにもかかわらず、サブドメインとポート ":5000"を使用せずに自分のwebisteにアクセスすることはできません。この仮想ホストは完全に無視されているようです!
Dockerfile:pythonのFROM
:最新
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
これらのURLで<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')
私は私のウェブサイトを参照することができます
- "my.domain.guru:5000"
- 「ドメインを。教師:5000 "(理由は?)
しかし、私は自分のウェブサイトに「my.domain.guru」というURLだけでアクセスしたいと思います。私はこのURLをしようとすると、私は次のエラーメッセージがあります。
を禁止
をこのサーバー上の/アクセスする権限がありません。
どのようにするには?
(それは既に他のウェブサイトで使用されているので、私はポート80を使用することはできません)
コンテナを止めても禁じられますか?私はそれがポート80にバインドされた何かを持っているので起こったと思います。 – kewne
あなたの問題ではありませんが、Apacheがビルド中に実行されていないため、この行は意味をなさない: "RUN service apache2 restart" – Robert