1.設置環境
python3.6
centos7
django2.0
Docker
2.dockerをインストールします
yum -y install gcc
2.gcc-c++をインストールします
yum -y install gcc-c++
3.他のインストールパッケージをインストールします
yum install -y yum-utils device-mapper-persistent-data lvm2
4.AlibabaCloudインストール依存関係パッケージをインストールします。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
コンピューターに複数のバージョンのPython環境があるため、ここでも次のエラーが発生しました。
File "/bin/yum-config-manager", line 159
print yb.fmtSection('main')
^
SyntaxError: invalid syntax
最初の行を次のように変更するだけです
#!/usr/bin/python2.7
5.dockerCEをインストールします
sudo yum makecache fast
sudo yum -y install docker-ce
6.dockerを起動します
sudo service docker start
第三に、フラスコプロジェクトを作成します。
1. Webの簡略化されたバージョンを構築するには、空のプロジェクトディレクトリを作成します。ディレクトリ構造を次の図に示します。
次のコードを使用してstart.pyスタートアップファイルを作成します。
from flask import Flask
app = Flask(__name__) #记住这里的变量名app
@app.route('/')
def hello():
return 'hello docker&flask'
if __name__ == '__main__':
app.run(debug=True)
次のコマンドを入力して正常に実行できるかどうかをテストし(同じディレクトリのコマンドラインで入力する必要があります)、curl http://127.0.0.1:5000と入力して印刷内容を確認すると、正常に実行されます。
python start.py
2. Gunicorn+Geventをインストールします
Guincornはwsgiプロトコルをサポートするhttpサーバーであり、geventはサポートするモードの1つにすぎません。これは、djangoやflaskなどのWebフレームワークに付属するwsgiサーバーのパフォーマンス低下の問題を解決するためのものです。その特徴は、さまざまなWebフレームワークと緊密に統合されており、展開が特に便利なことです。
pip install gunicorn gevent
作成ディレクトリに新しいgunicorn.conf.pyを作成します
workers = 5 # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
worker_class = "gevent" # 采用gevent库,支持异步处理请求,提高吞吐量
bind = "0.0.0.0:80" #端口随便写,但是注意是否已经被占用。netstap -lntp
gunicornを起動し、正常に実行できるかどうかをテストします
gunicorn start:app -c gunicorn.conf.py
7.鏡を作る
1.同じディレクトリにrequirements.txtを作成します
プロジェクトのビルドに必要なランタイムの依存関係
gunicorn
gevent
flask
2.同じディレクトリにdockerfileファイルを作成します
作成ディレクトリに新しいdockerfileを作成します(推奨名はthisです)
# 1、第一行必须指定 基础镜像信息
FROM python:3.6 #FROM 必须 是 Dockerfile 中第一条非注释命令
WORKDIR /var/www/html/your/project/ #指定工作目录
COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
#安装依赖
COPY . .
CMD ["gunicorn", "start:app", "-c", "./gunicorn.conf.py"] #用于指定默认的容器主进程的启动命令
3. Dockerイメージを作成します(名前は任意です)
sudo docker build -t 'dockerName' . #我的叫docker_flask_web
Dockerイメージを使用してミラーイメージを表示できます
4.画像をDockerにプッシュします。
a。公式アドレスにアクセスしてDockerアカウントを作成し、アカウント名を覚えておいてください
b。Dockerイメージを使用してローカルイメージ情報を検索し、使用するイメージ名を選択します。ここではdocker_flask_web:latestを選択します。オンラインで煩わされないように、この名前も使用します。
docker tag docker_flask_web:latest 账号名/线上标签名:latest
5. dockerにログインし、アカウントのパスワードを入力します
docker login
6. Dockerハブをプッシュします。成功したら、Docker Webサイトにログインして、Dockerハブがすでに存在するかどうかを確認できます。
docker push 账号名/线上名称:latest
7.プルして自分のサーバーにダウンロードします
docker pull 账号名/线上名称:latest
非常に遅い場合は、Alibaba Cloudのアクセラレーションを使用し、Alibaba Cloud Image Accelerationにログインして独自のアクセラレーションアドレスを見つけ、それを/etc/docker/deamon.jsonに追加できます。
{
"registry-mirrors": ["阿里云加速器地址"]
}
8.Dockerイメージを一時的に実行します
sudo docker run -it --rm -p 80:80 docker_flask_web
Dockerイメージが正常に実行され、ブロック状態になっていることがわかります。これで、Flaskプロジェクトが正常にデプロイされました。
ノート:
ローカルインスタンスの一覧表示:Dockerイメージ
イメージを削除します:docker image rm image name:tag name
コンテナーを表示します:docker container ls -a
現在実行中のコンテナーを表示する:docker ps
コンテナを停止します:docker stop $ CONTAINER_ID
参照ブログ:
https://yq.aliyun.com/articles/110806
https://blog.csdn.net/li1325169021/article/details/90780627