Dockerでフラスコプロジェクトをデプロイする方法を実践的に教える

1.設置環境

python3.6

centos7

django2.0

Docker

警告: DockerYUMソースを構成せずに yumコマンドを 使用して直接インストールしないでください
Docker。
 

2.dockerをインストールします

 1.gccをインストールします
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

https://zhuanlan.zhihu.com/p/78432719

https://yeasy.gitbooks.io/docker_practice/image/pull.html

おすすめ

転載: blog.csdn.net/hard_days/article/details/103423188