ホームページ >テクノロジー周辺機器 >IT業界 >DockerとDockerの機能的な深さは構成されています
Docker ComposeおよびVultr Containerレジストリを使用したマルチコンテナーフラスコアプリケーションをビルドDocker Composeを使用すると、ユーザーは単一の構成ファイルを使用してマルチコンテナーアプリケーションを実行および定義できます。複数のコンテナのセットアップと管理プロセスを簡素化し、アプリケーションの開発、テスト、展開が容易になります。この記事では、2つのコンテナを備えたフラスコアプリケーションを作成し、Vultr Container Registry(VCR)を使用してアプリケーションのDocker画像を管理し、Dockerのマルチコンテナー機能を使用して複数のコンテナを管理するようにします。
サンプルアプリケーションの作成次の手順では、サンプルアプリケーションを作成するように導きます。
Vultr Customer Portalを介してDocker Marketアプリケーションを使用して、Vultr Computeインスタンスを展開します。
SSHを使用して、非ルートSUDOユーザーを使用してサーバーに安全にアクセスします。
サーバーを更新します。
新しいプロジェクトディレクトリを作成して、入力します:
<code class="language-bash">mkdir flask-redis-example cd flask-redis-example</code>
app.py
<code class="language-bash">nano app.py</code>次のコードを追加します:
ファイルを保存して終了します。このフラスココードは、Redisデータベースに接続し、ルートURLにアクセスするたびにカウンターを増加させます。
<code class="language-python">from flask import Flask, render_template import redis app = Flask(__name__) redis_client = redis.Redis(host='redis', port=6379) @app.route('/') def hello(): count = redis_client.incr('hits') return render_template('index.html', count=count) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)</code>
ポート5000への着信接続を許可し、ファイアウォールをリロードします:
<code class="language-bash">sudo ufw allow 5000 sudo ufw reload</code>
requirements.txt
<code class="language-bash">nano requirements.txt</code>次のパッケージを追加します:
ファイルを保存して閉じます。
<code>flask redis</code>
ディレクトリに別のディレクトリを作成して入力してください:
flask-redis-example
<code class="language-bash"> mkdir static cd static</code>:
styles.css
<code class="language-bash"> nano styles.css</code>
<code class="language-css"> body { font-family: Arial, sans-serif; text-align: center; background-color: #f4f4f4; margin: 0; padding: 0; } h1 { color: #333; margin-top: 50px; } p { font-size: 18px; color: #666; }</code>
ディレクトリに別のディレクトリを作成して入力してください:
flask-redis-example
<code class="language-bash"> mkdir templates cd templates</code>という名前の新しいファイルを作成します
index.html
次のコードを追加します:
<code class="language-bash"> nano index.html</code>
<code class="language-html"> <!DOCTYPE html> <title>Flask App</title> <link rel="stylesheet" href="%7B%7B%20url_for('static',%20filename='styles.css')%20%7D%7D"> <h1>Hello, World!</h1> <p>I have been seen {{ count }} times.</p> </code>
vultr container registryを使用
バルトコンテナレジストリを展開します。
次の構成を追加します:flask-redis-example
<code class="language-bash">nano Dockerfile.flask</code>ファイルを保存して終了します。
build docker image:
<code class="language-dockerfile">FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . COPY static/ ./static/ COPY templates/ ./templates/ EXPOSE 5000 CMD ["python", "app.py"]</code>
<code class="language-bash">docker build -t flask-app .</code>バルトコンテナレジストリの概要セクションに記載されている
を置き換えてください。
タグDocker画像:
<code class="language-bash">mkdir flask-redis-example cd flask-redis-example</code>
鏡をバルトコンテナレジストリに吐き出す:
<code class="language-bash">nano app.py</code>
docker画像を押した後、Vultr DashboardのVultr Containerレジストリの「リポジトリ」セクションに画像が存在することを確認します。
docker-compose.yaml
:
<code class="language-python">from flask import Flask, render_template import redis app = Flask(__name__) redis_client = redis.Redis(host='redis', port=6379) @app.route('/') def hello(): count = redis_client.incr('hits') return render_template('index.html', count=count) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)</code>
ファイルを保存して終了します。上記のYAML構成では、2つのサービスweb
とredis
を定義します。 web
サービスは、現在のディレクトリ(。)からフラスコのアプリケーションを構築し、コンテナのポート5000をホストのポート5000にマッピングします。また、web
サービスがredis
サービスに依存することも指定しています。 redis
このサービスは、Docker Hubの公式Redis Dockerイメージを使用しています。
build dockerはファイルを構成します:
<code class="language-bash">sudo ufw allow 5000 sudo ufw reload</code>
ビルドプロセスが完了したら、http://
バルトコンテナレジストリのその他の使用
ベストプラクティス
docker-compose.yaml
docker-compose up
、docker-compose down
などのDocker Composeの組み込みコマンドを使用します。 docker-compose ps
結論 この記事では、2つのコンテナを備えたフラスコアプリケーションを作成し、Vultr Containerレジストリを使用してアプリケーションのDocker画像を管理し、Dockerのマルチコンテナー機能を利用して複数のコンテナを管理しました。
この記事はVultrが後援しています。 Vultrは、世界最大のプライベートクラウドコンピューティングプラットフォームです。開発者の中でお気に入りのVultrは、185か国で150万人以上の顧客に柔軟でスケーラブルなグローバルクラウドコンピューティング、クラウドGPU、ベアメタル、クラウドストレージソリューションを提供しています。 Vultrの詳細以上がDockerとDockerの機能的な深さは構成されていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。