Containerize生産のためのDockerとアプリケーションを反応させる
Docker概観
Dockerは、開発、出荷、および実行中のアプリケーションのオープンプラットフォームです.Dockerはあなたのアプリケーションとインフラストラクチャの間の隔離を提供することにより、ソフトウェアの迅速な配信を保証します.Dockerパッケージとは、コンテナと呼ばれる緩やかに隔離された環境の中ですべてを実行します.
鍵語
イメージ-あなたのアプリケーション(OOPのクラスのように)を実行するために必要なすべて(アプリケーションコード、必要なライブラリ、ソフトウェア依存、構成など)を含む完全なパッケージ
コンテナ- OOPのオブジェクトと同じように、イメージのインスタンス
ボリューム-イメージは、ボリュームを使用してデータを保持する読み取り専用です.最も簡単な条件で、あなたはDockerイメージでフォルダ(ホストOS上で)をデータを読み書きするために共有します.
dockerfile -画像の青写真.これは、あなたが構築しようとしているイメージの中に何があるかを定義するところです.OS(例えばubuntu 16)、ソフトウェア(例えばノード)などのように.
タグ-今ちょうどそれをリテラル用語で考慮します.
私は、あなたがあなたがそうしないならば、あなたがDockerを使用してコンテナ化したいあなたの反応アプリケーションを準備しておくと仮定します.you can clone this sample React application そして、続いてください.
Download and install docker
次の2つの設定ファイルを作成する必要があります. nginx ( webserver ) Docker ( Dockerのイメージを作成する) 金研
反応のビルドファイルは、静的な(HTML、CSS、JSなど)ファイルであり、NGinx、Apache、OpenListespeedなどの静的ファイルを提供するWebサーバーが必要です.
あなたの反応アプリの中で、別のディレクトリを作成し、それを名前
Dockerfile
アプリケーションディレクトリ内に新しいファイルを作成し、
それで、あなたのディレクトリ構造は
ステージ1 マルチステージDockerビルドを使用する( Docker V 17 +)
ラン パッケージをコピーします.JSON最初に依存関係をインストールし、コピーしない
ステージ2
最初の段階では、パッケージをコピーしました.作業ディレクトリにJSON、依存関係をインストールし、コードをコピーし、最後の静的ファイルを構築しました.ステージ2 : 用途 ステージ1から4にビルドファイルをコピーします デフォルトのnginx設定ファイルを 以前に作成した設定ファイルをDockerイメージにコピーします 用途 ラン 両方
ステップ3:ビルドとタグイメージ
アプリケーションのルートディレクトリから、次のコマンドを実行してDockerイメージをビルド&タグします. **ステップ4 :コンテナを実行する
最後のステップは、ビルドされたイメージ(容器として)を実行することです 今すぐあなたのブラウザを開き、行く
エキストラ ラン ラン ラン 読み込むDocker getting starting guide
接続しましょう
リンケディン
Twitter
Dockerは、開発、出荷、および実行中のアプリケーションのオープンプラットフォームです.Dockerはあなたのアプリケーションとインフラストラクチャの間の隔離を提供することにより、ソフトウェアの迅速な配信を保証します.Dockerパッケージとは、コンテナと呼ばれる緩やかに隔離された環境の中ですべてを実行します.
鍵語
イメージ-あなたのアプリケーション(OOPのクラスのように)を実行するために必要なすべて(アプリケーションコード、必要なライブラリ、ソフトウェア依存、構成など)を含む完全なパッケージ
コンテナ- OOPのオブジェクトと同じように、イメージのインスタンス
ボリューム-イメージは、ボリュームを使用してデータを保持する読み取り専用です.最も簡単な条件で、あなたはDockerイメージでフォルダ(ホストOS上で)をデータを読み書きするために共有します.
dockerfile -画像の青写真.これは、あなたが構築しようとしているイメージの中に何があるかを定義するところです.OS(例えばubuntu 16)、ソフトウェア(例えばノード)などのように.
タグ-今ちょうどそれをリテラル用語で考慮します.
私は、あなたがあなたがそうしないならば、あなたがDockerを使用してコンテナ化したいあなたの反応アプリケーションを準備しておくと仮定します.you can clone this sample React application そして、続いてください.
ステップ1 :インストール
Download and install docker
ステップ2 :設定ファイルの準備
次の2つの設定ファイルを作成する必要があります.
反応のビルドファイルは、静的な(HTML、CSS、JSなど)ファイルであり、NGinx、Apache、OpenListespeedなどの静的ファイルを提供するWebサーバーが必要です.
あなたの反応アプリの中で、別のディレクトリを作成し、それを名前
nginx
. NGinxディレクトリ(ちょうど作成される)の中で、新しいファイルを作成して、それを命名してくださいnginx.conf
. また、次のコマンド(1つずつそれを達成するために)に使用することができます.cd my-app
mkdir nginx
cd nginx
touch nginx.conf
“nginx . conf”ファイルを編集し、次のコードを追加します.server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# to redirect all the requests to index.html,
# useful when you are using react-router
try_files $uri /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
このコードブロックの要点は、NGINXがポート80をlistenするように指示していることで、すべてのリクエストを"index . html "にリダイレクトし、ルートを/usr/share/nginx/html "とすることです.Dockerfile
アプリケーションディレクトリ内に新しいファイルを作成し、
Dockerfile.prod
に次のコードを追加します.# stage1 - build react app first
FROM node:12.16.1-alpine3.9 as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY ./package.json /app/
COPY ./yarn.lock /app/
RUN yarn
COPY . /app
RUN yarn build
# stage 2 - build the final image and copy the react build files
FROM nginx:1.17.8-alpine
COPY --from=build /app/build /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
新しいファイルを作成し、.dockerignore
追加node_modules
インサイド.これは単にDockerに無視してくださいnode_modules
ディレクトリ.それで、あなたのディレクトリ構造は
my-app
│ Dockerfile.prod
│ .dockerignore
│
└───nginx
nginx.conf
解説ステージ1
FROM
どのような基本イメージを使用するかを指示するDocker Hub WORKDIR
はワーキングディレクトリ(イメージの中でホストOSではない)を指定するために使われる.ENV PATH
パスにnodeoundモジュールを追加するCOPY
をコピーするpackage.json
カレントディレクトリ(ホスト上)から作業ディレクトリ(イメージ中).RUN
はコマンドを実行するために使いますYarn
packageに含まれる依存関係をインストールするにはJSONCOPY
を実行し、ホストOSからすべてのコードをイメージディレクトリのワーキングディレクトリにコピーしますyarn build
我々のアプリを構築するにはnode_modules
画像に.これは、dockerの優れたキャッシュシステムを活用し、ビルド時間を減らすことです.ステージ2
最初の段階では、パッケージをコピーしました.作業ディレクトリにJSON、依存関係をインストールし、コードをコピーし、最後の静的ファイルを構築しました.ステージ2 :
Nginx
ベースイメージとして.( nginx
がイメージであり1.17.8-alpine
がタグです.それはあなたが使用したいNGinxベースのイメージの特定のバージョン/リリースを教えているようなものです./usr/share/nginx/html
( nginxが提供するデフォルトディレクトリ)/etc/nginx/conf.d/default.conf
EXPOSE
容器のポートを露出させる.つの落とし穴は、実際にはポートを公開していないということです、むしろそれはドキュメントのためだけですNginx
フォアグラウンドではなく、デーモン(バックグラウンドでのE )として.CMD
and RUN
はコマンドを実行するために使われる.違いはRUN
がイメージビルドステップですCMD
コマンドはコンテナが起動時にデフォルトで実行されます.ステップ3:ビルドとタグイメージ
アプリケーションのルートディレクトリから、次のコマンドを実行してDockerイメージをビルド&タグします.
docker build -f Dockerfile.prod -t my-first-image:latest .
-f
はファイル名を指定するために使われる.指定しない場合は、ファイル名をDockerfile
- これはビルドコマンドが現在のディレクトリでデフォルトで探すものです.-t
は画像のタグ付けに使われる.あなたのイメージをすることができますタグをする方法.
最後に重要で、カレントディレクトリを使用するようDockerに指示する必要があります.最後のステップは、ビルドされたイメージ(容器として)を実行することです
docker run -it -p 80:80 --rm my-first-image:latest
-it
インタラクティブモード-p
ポートを公開してバインドするにはここでは、コンテナのポート80を公開し、ホストマシンのポート80と結合します.一つ目はマシン(ホストOS )で、2番目はDockerイメージコンテナーです.例えば、あなたが使うなら-p 1234:80
次に、あなたが行く必要がありますhttp://localhost:1234
あなたのブラウザで.--rm
容器を取り外すmy-first-image:latest
私たちがコンテナを走らせるイメージのタグhttp://localhost
そして、あなたのアプリは、Dockerから提供されて表示されます.あなたの反応アプリケーションコードに変更を加えるならば、あなたはイメージを再構築する必要があります(ステップ3)そして、それをもう一度実行してください(ステップ4).エキストラ
docker image ls
マシン上のすべての画像の一覧を表示するにはdocker container ls
全てのコンテナを見るdocker system prune
コンテナを刈り取るには(このコマンドを使用している間は注意してください.リンケディン
Reference
この問題について(Containerize生産のためのDockerとアプリケーションを反応させる), 我々は、より多くの情報をここで見つけました https://dev.to/aws-builders/containerize-react-app-with-docker-for-production-572bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol