ドッキングウィンドウコンテナの展開Asp.Netコア、Nginxは、MySQLの

2019年10月24日、docker19.03.4は、
3.0 .netcore ドッキングウィンドウ・コン振り付けコンテナNginxは、MySQLのコンテナ、Webコンテナを使用し、asp.netコア3.0 Webサイトプロジェクトのコンテナの展開:要約

依存構造の紹介

samplemsという名前のWebサイト全体のプロジェクト、3個のコンテナ(依存順序による)の合計必要があります。
1.MySQL容器、という名前をsamplems.mysqlから、mysql(公式)ミラー
2.web容器、という名前samplems.webから、samplemsweb(増築所有)ミラー
3名前の.nginx容器、samplems.nginxから、samplemsnginx画像(自分自身の外に構築)
3つのコンテナにドッキングウィンドウ・コン振り付けを使用するには、ブリッジネットワーク(名前の確立はsamplems-net)3連絡します

ディレクトリ構造

展開するために必要なファイルを格納するために使用される展開フォルダ内のCentOS上の新展開、以下で説明するように、ファイル構造に展開は徐々に:(後に確立されます)

│  docker-compose.yml       //compose编排文件
│ 
├─web                       //web 目录 
│  │  Dockerfile            //web docker配置文件 
│  │                      
│  └─publish                //web 发布文件(发布生成的内容) 
│      ...                     
│      appsettings.json     //发布文件中包含appsettings.json,其中有数据库连接配置 
│      ... 
│   
└─nginx                     //nginx目录
    │  Dockerfile           //nginx docker配置文件
    │                                                         
    └─confs                 //nginx 配置文件目录
        nginx.conf          //nginx全局配置
        samplems.conf       //web项目对应的nginx配置文件

2段階の展開:
必要な画像の1建設
2.アレンジメントコンテナをドッキングウィンドウ、構成

必要な画像の構築

MySQLのミラー

このプロジェクトは、さらに修正パッケージ、直接プル(ダウンロード)公式画像なしで直接、MySQLの公式ミラーイメージを使用しています。

docker pull mysql

ミラーリングウェブ

Webプロジェクトの準備

以下でのVisual Studioは、MySQLデータベースの接続文字列のWebプロジェクト(中appsettings.json)で:

server=samplems.mysql;database=samplems;user=root;password=mysql@samplems

注意点:

  • サーバー= samplems.mysql、このアドレスは、私たちのMySQLの船名です。
  • ここでパスワード以降ドッキングウィンドウ-compose.ymlが一致するようにMySQLのパスワードを指定しました。
  • 明示的に指定されていない接続文字列ポートは、それがデフォルトポート3306であります

ときにWebパブリッシングプロジェクト、ターゲット・ランタイムを選択するlinux-x64か、可移植
次のように、フォルダを公開/デプロイ/ウェブに入れて、ターゲット・システムにコピーされたコンテンツを公開:

私は、Webプロジェクト名WebMvcのためにここにいるので、どこWebMvc.dllです以下DockerfileはDOTNET命令内のオブジェクト。

Dockerfileを書きます

以下のように、新しいDockerfileファイルの下に/ webフォルダを展開。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
WORKDIR /app
COPY ./publish/ /app 
EXPOSE 80
ENTRYPOINT ["dotnet","WebMvc.dll"]

平均以上の五の文章は以下のとおりです。

  • ベースのmcr.microsoft.com/dotnet/core/aspnet:3.0ミラー(それがnetcore3.0 Webプロジェクトであるため)、自動的に画像をダウンロードします
  • コンテナ内で動作するように/アプリケーションディレクトリ
  • /ウェブ/の/アプリのすべての内容をコピーするフォルダを公開
  • 80暴露コンテナ港
  • WebMvc.dllが作業ディレクトリに、それは任意のパスを必要としないためDOTNET実行asp.netコアWebプロジェクトを使用して、ここでは、「WebMvc.dll」であります

建物のウェブミラー

デプロイ/ Webファイルに反映フォルダのビルドが:( samplemswebの間に次の命令やスペースに注意してください。、Samplemswebは)我々がイメージ名という名前のものです

docker build -t samplemsweb .

下図のように:

nginxのミラー

nginxの設定ファイル

展開/ nginxの/会議通話数/新しいファイルnginx.conf、このファイルには、コンフィギュレーション・ファイルnginxのは、次のとおりです。

user  nginx;
worker_processes  1;
#error_log
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    client_max_body_size 256m;
    client_body_buffer_size 50m;
    access_log  /var/log/nginx/access.log  main;
    #以下是 websocket 支持配置
    #map $http_upgrade $connection_upgrade {
    #   default upgrade;
    #    '' close;
    #}

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

以下のように、新しい文書の下で/ nginxの/会議通話数/ samplems.confをデプロイします。

# 设定负载均衡后台服务器列表 
upstream composeserver {
#指定支持的调度算法
    ip_hash;
    server samplems.web:80;
}

#虚拟主机的配置
server {
    listen 80;
    location / {
        proxy_pass http://composeserver;
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #以下是 websocket 支持配置
        #proxy_http_version 1.1;
        #proxy_set_header Upgrade $http_upgrade;
        #proxy_set_header Connection $connection_upgrade;
    }
}

弊社のWebコンテナ、80の背面に、すなわちコンテナ港の名前ですSamplems.web

Dockerfileを書きます

新Dockerfileファイルのデプロイ/ nginxのフォルダ、次のように:

FROM nginx:latest

COPY ./confs/samplems.conf /etc/nginx/conf.d/default.conf
COPY ./confs/nginx.conf /etc/nginx/nginx.conf

上記の3つの文章があることを意味します:

  • 最新の画像の建物に基づいてNginxは、自動的に画像をダウンロードします
  • 会議通話数/ samplems.confコピーファイル/etc/nginx/conf.d/default.confへ
  • /etc/nginx/nginx.confに会議通話数/ nginx.confコピーファイル

nginxのミラーの構築

次のコマンド:(ノートとの間samplemsnginx。スペースを使用してミラーの構築、Samplemsnginxは)我々がイメージ名という名前のものです

docker build -t samplemsnginx .

終了し、ドッキングウィンドウビューミラーリスト:

これまでのすべてのミラーが確立されています

ドッキングウィンドウ-compose.ymlを書きます

デプロイフォルダの新しいドッキングウィンドウ-compose.ymlファイルには、次のように:

version: '3.4'

services:
  samplems.mysql:
    image: mysql
    container_name: samplems.mysql
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=mysql@samplems
      - TZ=Asia/Shanghai
    volumes:
      - /app/data/mysql:/var/lib/mysql
    networks:
      - samplems-net

  samplems.web:
    image: samplemsweb
    container_name: samplems.web
    restart: always
    depends_on:
      - samplems.mysql
    environment:
      - TZ=Asia/Shanghai
    networks:
      - samplems-net

  samplems.nginx:
    image: samplemsnginx
    container_name: samplems.nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /app/logs/nginxlogs:/var/log/nginx
    depends_on:
      - samplems.web
    networks:
      - samplems-net

networks:
  samplems-net:
    driver: bridge

上に示したコード、サービスsamplems.mysql、samplems.web、samplems.nginx 3つ持っているファイル全体構造YML大別バージョン、サービス、ネットワーク3、

samplems.mysql:

  • ミラーイメージは、ここでは、参照を表し、公式のMySQLです
  • CONTAINER_NAME:コンテナ名(このフィールドの同様に定義される2つの他の容器)
  • ホストポートのポート番号が3306、容器ポート3306にマッピングされたマップ(同様に、この分野の他の二つのコンテナを定義)
  • 再起動:コンテナ出口(このフィールドの二つの他の船舶と同じ定義)を常に再起動した後、必ず再起動ポリシーを指定
  • 環境はMySQLの@のsamplemsのためのMySQLのrootアカウントのパスワードで定義され、ここでパスワードWebプロジェクトは、一貫性を必要とします
  • 定義された環境地域アジア上海コンテナ(このフィールドの二つの他のコンテナと同じ定義)、コンテナのゾーンを防ぎ、タイムゾーンは、ホストが、時間のずれを得ることはありません
  • ボリュームは、データボリューム、(データがまだ存在していても、削除されるので、mysqlのコンテナ)ホスト/アプリ/データ/ mysqlのに書き込まれたファイルは/ var / libに/ mysqlのに書き込まれるすべてのコンテナをマウント
  • カスタムブリッジネットワーク(このフィールドの二つの他のコンテナと同じ定義)を使用してsamplemsネットネットワーク

samplems.web:

  • ここで参照画像は、ウェブの私たち自身のビルドの鏡です
  • depends_onショーコンテナ最初samplems.mysqlを開始し、その後、samplems.webを開始

samplems.nginx:

  • ここで参照画像は、nginxのの私たち自身のビルドの鏡です
  • ポート80ポートは、デフォルトのHTTPポート443をデフォルトのHTTPSポートです
  • ボリュームは、データボリュームをマウント、ファイルは/ var / log / nginxのに書き込まれるすべてのコンテナは、このログファイルにホスト/アプリ/ログ/ nginxlogsに書き込まれ、主nginxのです
  • depends_onショーコンテナ最初samplems.webを開始し、その後、samplems.nginx、このようにして、はmysql-> WEB->のnginxの開始のためのオーダーを開始

コンテナを開始

すべての準備が完了しているこの時点では、コンテナのデプロイフォルダの開始時に次のコマンドを実行します。

docker-compose up -d

次の図は、3つの緑が行われるには、3つのコンテナには成功したスタートを表す:

使用ドッキングウィンドウは、ps、コンテナの実行状態を表示するには、それが実行されています。

ホストファイアウォールのポート80を開きます。

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo systemctl restart firewalld

CentOSのブラウザはIPアドレスにアクセスするには、Webページを表示することができます:

おすすめ

転載: www.cnblogs.com/kasnti/p/11731899.html