フロントエンドとバックエンドの開発のためのDocker -展開のためのローカルテストのためだけに.
9298 ワード
我々は現在、フロントエンドとバックエンド我々のローカルコンピュータ上で完璧に動作している.あなたが前の作品を終えたならば、あなたがこのガイドからより多くを得ることができるが、それは一般的に役に立つこともありえます.このセクションの目的は、近代的な展開のためのWebアプリケーションを準備することです.
我々は簡単にすべてのコンピュータ上でフロントエンドとバックエンドを実行し、必要に応じてフレームワークをスケールすることができます.いくつかの方法があります.それは近年非常に成功しているので、我々はこのシリーズのDockerを使用します.このガイドは4つのセクションに分けられます. Dockerは何ですか? フロントエンドバックエンド一度にすべてを実行している
チェンクは何ですか? Dockerがウェブ上でどこにいるのかについて、非常に多くの説明があります.私はメインパーツに連絡する必要がありますが、私はここでsubtletiesに行くことはありません.私の主要な懸念は、このビデオからとられました.
コンテナドキュメントとしてバックエンドを作り、ローカルで試してみました.現在、我々はそれを走らせるために雲の中で点を発見する必要があります.我々が現在経験している主要なテストは、我々が我々のバックエンドが実際にそれがローカルにするように実際に雲で動くことを保証することができないということです.雲気候が我々の近隣気候に等しいならば、我々はそのような保証をすることができました.私たちの近所と雲の気候の間に穴を得るために少し考えられるように我々は我々が必要とするクラウドサプライヤーを伝える必要があります.それにもかかわらず、クラウドサプライヤーとして、1000000デザイナーを持つことはできませんどのように個々の雲の配置が似ている必要がありますあなたに明らかに.それがクラウドサプライヤーが様々なバンドルを提供する理由です.彼らは、(仮想)マシンを与え、我々のアプリケーションを実行するための静的な気候を与えるの間に変動する.個々のマシンの発生が起こるならば、それは現在、我々の近くの機械としてマシンを運ぶことを確実とするために、デザイナーに依存しています.それはあまりにも高価な時間であり、我々は実際に全体のマシンを必要としないようにさらに高価です.我々は、単に我々のコンテナ記録を走らせる点を必要とします.我々が静的気候で我々を供給することが起こるならば、我々は現在我々の近所気候が何か非常に類似した行動をすることを確実とする必要があります.これはすべてのことを考慮に入れる価値がない.正確にここでDockerに役立つ.
Dockerは共有信念を提供し、本物の鋼鉄トレーラーと本物の感覚になります.バナナの組織だけでどのようにコンパートメントにバナナを取得する上で強調する.それが閉じられるときはいつでも、そこにあることは少しの違いもありません.それは基本的に、それぞれのすべてのコンパートメントのように扱われ、配信機関はどのように機能を実現する.Dockerは十分に適応可能な標準を与えますが、さらに、製品がそれがローカルにする同様の方法で雲で動くのを確実にします.
我々は、アプリケーションのDocker画像を作るためにDockerを使用します.単に我々はコンパクトディスクにそれをコピーします.その絵はDockerファイルを使用してアセンブルされます.その絵は、それからDockerコンパートメントの中で利用されることができます.
Dockerは驚くべき資産であり、より価値のあるハイライト(例えばスケーリング)を与えます.とにかく、これはここで重要でありません.
フロントエンドのためのDocker
フロントエンドをdockerizeしようとする前に、dockerを設定してください.さらに、config . configで.NuxtJSは、我々のベースURLを調べる必要があります.私たちがクラウドで我々のアプリを展開するなら、それはまだ我々のバックエンドがlocalhostでアクセス可能であると信じています:8080.そういうわけで、我々はあらゆる環境特有の要素を取り除かなければなりません.
環境変数の抽出
フロントエンドをdockerizeしようとする前に、dockerを設定してください.さらに、フロントエンドでは、バックエンドのURLである環境変数が一つしかありません.
値が利用できないならば、我々はそれをデフォルト値(http://localhost:8080/)にセットしました、そして、我々は設定で我々のベースURLをチェックしなければなりません.Nuxtjs私たちがクラウドで我々のアプリを展開するならば、それはまだ我々のバックエンドがlocalhostでアクセス可能であると信じています:8080.その結果、環境変数を削除しなければなりません.
dockerizeやbackendすることができるまで、我々はフロントエンドのためにしたように、すべての環境固有の属性を削除する必要があります.バックエンドでは、2つの環境固有の変数があります.フロントエンドのアドレスとサーバのアドレス.
プログラムはすべての環境固有の変数を設定します.
アセットファイルはリソースフォルダーにあります.各ラインにはキーと値が含まれます.値については、環境変数(Dockerが提供する)または既定値を使用します.次のコードを入れます.
なぜ私たちはすでにMOGODBのURIを設定していないのでしょう.それは、春がMongoDBがそのURIで見つかるとデフォルトで考えたからです.一度それを置くと変更されます.それが我々がそれを抽出している理由です.Herokuはチュートリアルの次のセクションでサーバーポートを使用できます.
フロントエンドとバックエンドDockerFilesの間にはかなりの相違があります.前者はアプリケーションのコードを保持します.バックエンドに改良を加えるならば、我々は最初にこのコマンドでそれを構築しなければなりません.
我々は、我々が我々が必要とするすべてを持つ今、それを始めるために、Docker Composeを使います.Dockerを構成するコマンドは、環境変数を設定するだけでなく、使用するサービス(およびイメージ)を起動するようDockerに指示します.プロジェクトのルートフォルダで、
我々は簡単にすべてのコンピュータ上でフロントエンドとバックエンドを実行し、必要に応じてフレームワークをスケールすることができます.いくつかの方法があります.それは近年非常に成功しているので、我々はこのシリーズのDockerを使用します.このガイドは4つのセクションに分けられます.
チェンクは何ですか?
コンテナドキュメントとしてバックエンドを作り、ローカルで試してみました.現在、我々はそれを走らせるために雲の中で点を発見する必要があります.我々が現在経験している主要なテストは、我々が我々のバックエンドが実際にそれがローカルにするように実際に雲で動くことを保証することができないということです.雲気候が我々の近隣気候に等しいならば、我々はそのような保証をすることができました.私たちの近所と雲の気候の間に穴を得るために少し考えられるように我々は我々が必要とするクラウドサプライヤーを伝える必要があります.それにもかかわらず、クラウドサプライヤーとして、1000000デザイナーを持つことはできませんどのように個々の雲の配置が似ている必要がありますあなたに明らかに.それがクラウドサプライヤーが様々なバンドルを提供する理由です.彼らは、(仮想)マシンを与え、我々のアプリケーションを実行するための静的な気候を与えるの間に変動する.個々のマシンの発生が起こるならば、それは現在、我々の近くの機械としてマシンを運ぶことを確実とするために、デザイナーに依存しています.それはあまりにも高価な時間であり、我々は実際に全体のマシンを必要としないようにさらに高価です.我々は、単に我々のコンテナ記録を走らせる点を必要とします.我々が静的気候で我々を供給することが起こるならば、我々は現在我々の近所気候が何か非常に類似した行動をすることを確実とする必要があります.これはすべてのことを考慮に入れる価値がない.正確にここでDockerに役立つ.
Dockerは共有信念を提供し、本物の鋼鉄トレーラーと本物の感覚になります.バナナの組織だけでどのようにコンパートメントにバナナを取得する上で強調する.それが閉じられるときはいつでも、そこにあることは少しの違いもありません.それは基本的に、それぞれのすべてのコンパートメントのように扱われ、配信機関はどのように機能を実現する.Dockerは十分に適応可能な標準を与えますが、さらに、製品がそれがローカルにする同様の方法で雲で動くのを確実にします.
我々は、アプリケーションのDocker画像を作るためにDockerを使用します.単に我々はコンパクトディスクにそれをコピーします.その絵はDockerファイルを使用してアセンブルされます.その絵は、それからDockerコンパートメントの中で利用されることができます.
Dockerは驚くべき資産であり、より価値のあるハイライト(例えばスケーリング)を与えます.とにかく、これはここで重要でありません.
フロントエンドのためのDocker
フロントエンドをdockerizeしようとする前に、dockerを設定してください.さらに、config . configで.NuxtJSは、我々のベースURLを調べる必要があります.私たちがクラウドで我々のアプリを展開するなら、それはまだ我々のバックエンドがlocalhostでアクセス可能であると信じています:8080.そういうわけで、我々はあらゆる環境特有の要素を取り除かなければなりません.
環境変数の抽出
フロントエンドをdockerizeしようとする前に、dockerを設定してください.さらに、フロントエンドでは、バックエンドのURLである環境変数が一つしかありません.
nuxt.config.js
パッケージでは、プロキシモジュールを使用しています.残っているのは環境変数を含むことです.値が利用できないならば、我々はそれをデフォルト値(http://localhost:8080/)にセットしました、そして、我々は設定で我々のベースURLをチェックしなければなりません.Nuxtjs私たちがクラウドで我々のアプリを展開するならば、それはまだ我々のバックエンドがlocalhostでアクセス可能であると信じています:8080.その結果、環境変数を削除しなければなりません.
proxy: {
'/api/': process.env.PROXY_API || 'http://localhost:8080/'
},
次に、フロントエンドフォルダで、フロントエンドと呼ばれるdockerfileを作ります.Dockerfile.Dockerファイルのコードは次の通りです.FROM node:alpine3.12
# Create an application directory
RUN mkdir -p /app
# The /app directory should act as the main application directory
WORKDIR /app
# Copy the app package and package-lock.json file
COPY frontend/package*.json ./
# Install node packages
RUN npm install
# Copy or project directory (locally) in the current directory of our docker image (/app)
COPY frontend/ .
# Build the app
RUN npm run build
# Expose $PORT on container.
# We use a varibale here as the port is something that can differ on the environment.
EXPOSE $PORT
# Set host to localhost / the docker image
ENV NUXT_HOST=0.0.0.0
# Set app port
ENV NUXT_PORT=$PORT
# Set the base url
ENV PROXY_API=$PROXY_API
# Set the browser base url
ENV PROXY_LOGIN=$PROXY_LOGIN
# Start the app
CMD [ "npm", "start" ]
各行についてのコメントとコメントは、何が起こっているかをうまく理解しなければならない.画像を作成するには、単にこのコマンドを端末に入力します.プロジェクトのルートディレクトリから実行してください.docker build --file=frontend/frontend.dockerfile -t playground-web-frontend .
完全な停止は非常に重要です—file
→ ビルド用のファイル.-t
→ 我々のイメージを特定するために、我々はそれをタグ付けします.
→ ビルドコンテキスト(アプリケーション)の場所.例ではカレントディレクトリを参照します.dockerizeやbackendすることができるまで、我々はフロントエンドのためにしたように、すべての環境固有の属性を削除する必要があります.バックエンドでは、2つの環境固有の変数があります.フロントエンドのアドレスとサーバのアドレス.
プログラムはすべての環境固有の変数を設定します.
アセットファイルはリソースフォルダーにあります.各ラインにはキーと値が含まれます.値については、環境変数(Dockerが提供する)または既定値を使用します.次のコードを入れます.
spring.data.mongodb.uri=${MONGODB_URI:mongodb://localhost:27017/todo}server.port=${PORT:8080}
なぜ私たちはすでにMOGODBのURIを設定していないのでしょう.それは、春がMongoDBがそのURIで見つかるとデフォルトで考えたからです.一度それを置くと変更されます.それが我々がそれを抽出している理由です.Herokuはチュートリアルの次のセクションでサーバーポートを使用できます.
FROM openjdk:15
# Create an application directory
RUN mkdir -p /app
# The /app directory should act as the main application directory
WORKDIR /app
# Copy or project directory (locally) in the current directory of our docker image (/app)
COPY backend/build/libs/*.jar ./app.jar
# Expose $PORT on container.
# We use a varibale here as the port is something that can differ on the environment.
EXPOSE $PORT
# Start the app
CMD [ "java", "-jar", "./app.jar" ]
各行のコメント/コメントはDockerFileで何が起こっているかを明確に明らかにするべきです.フロントエンドとバックエンドDockerFilesの間にはかなりの相違があります.前者はアプリケーションのコードを保持します.バックエンドに改良を加えるならば、我々は最初にこのコマンドでそれを構築しなければなりません.
gradle build
画像を作成するには、単にこのコマンドを端末に入力します.再び、プロジェクトのルートディレクトリから実行してください.docker build --file=backend/backend.dockerfile -t playground-web-backend .
—file
→ ビルド用のファイル.-t
→ 我々のイメージを特定するために、我々はそれをタグ付けします.
→ ビルドコンテキスト(アプリケーション)の場所.例ではカレントディレクトリを参照します.我々は、我々が我々が必要とするすべてを持つ今、それを始めるために、Docker Composeを使います.Dockerを構成するコマンドは、環境変数を設定するだけでなく、使用するサービス(およびイメージ)を起動するようDockerに指示します.プロジェクトのルートフォルダで、
docker-compose.yml
という新しいファイルを作成します.version: '1'
services:
playground-web-db:
image: mongo:4.4
environment:
MONGO_INITDB_DATABASE: playground-web
ports:
- 27017:27017
playground-web-frontend:
image: playground-web-frontend:latest
environment:
PORT: 3000
PROXY_API: http://playground-web-backend:8080/
ports:
- 3000:3000
playground-web-backend:
image: playground-web-backend:latest
environment:
MONGODB_URI: mongodb://playground-web-db:27017/playground-web
ports:
- 8080:8080
アプリケーションの実行を実行するには、次の手順に従います.docker-compose -f docker-compose.yml up
したがって、アプリケーションをアップロードして実行します.Reference
この問題について(フロントエンドとバックエンドの開発のためのDocker -展開のためのローカルテストのためだけに.), 我々は、より多くの情報をここで見つけました https://dev.to/vishwasnarayan5/docker-for-the-frontend-and-backend-development-just-for-local-testing-not-for-the-deployment-1470テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol