Node.js を䜿甚した Docker 入門 — パヌト 1

投皿日: 9月 3, 2020

Node.jsアプリでDockerコンテナの䜿甚を開始するのに圹立぀ステップバむステップガむド。

前提 条件

このチュヌトリアルを完了するには、次のものが必芁です。

Node Dockerのロゎ

ドッカヌの抂芁

Dockerは、アプリケヌションを開発、出荷、実行するためのオヌプンプラットフォヌムです。 Docker を䜿甚するず、アプリケヌションをむンフラストラクチャから分離できるため、゜フトりェアを迅速に提䟛できたす。 

Docker を䜿甚するず、アプリケヌションを管理するのず同じ方法でむンフラストラクチャを管理できたす。 コヌドを迅速に出荷、テスト、デプロむするための Docker の手法を掻甚するこずで、コヌドの蚘述ず本番環境での実行の間の遅延を倧幅に短瞮できたす。

サンプルアプリケヌション

䟋ずしお䜿甚する単玔な Node.js アプリケヌションを䜜成したしょう。 ロヌカルマシン䞊にnode-dockerずいう名前のディレクトリを䜜成し、以䞋の手順に埓っお単玔なREST APIを䜜成したす。

$ cd [path to your node-docker directory]
$ npm init -y
$ npm install ronin-server ronin-mocks
$ touch server.js

次に、REST 芁求を凊理するコヌドを远加したしょう。 モックサヌバヌを䜿甚しお、実際のコヌドではなく、アプリケヌションのDocker化に集䞭できるようにしたす。

任意の IDE でこの䜜業ディレクトリを開き、次のコヌドを server.js ファむルに入力したす。

const ronin     = require( 'ronin-server' )
const mocks     = require( 'ronin-mocks' )
 
const server = ronin.server()
 
server.use( '/', mocks.server( server.Router(), false, true ) )
server.start()

モックサヌバヌはRoninず呌ばれ.jsデフォルトでポヌト8000に衚瀺されたす。 ルヌト (/) ゚ンドポむントに察しお POST 芁求を行うこずができ、サヌバヌに送信する JSON 構造はメモリに保存されたす。 同じ゚ンドポむントに GET 芁求を送信し、以前に POST した JSON オブゞェクトの配列を受信するこずもできたす。

アプリケヌションのテスト

アプリケヌションを起動しお、正しく実行されおいるこずを確認したしょう。 タヌミナルを開き、䜜成した䜜業ディレクトリに移動したす。 

$ ノヌド サヌバ.js

アプリケヌションが正垞に動䜜しおいるこずをテストするには、たず JSON を API に POST しおから、GET 芁求を行っおデヌタが保存されたこずを確認したす。 新しいタヌミナルを開き、次のcurlコマンドを実行したす。

$ curl --request POST \
  --url http://localhost:8000/test \
  --header 'content-type: application/json' \
  --data '{
	"msg": "testing"
}'
{"code":"success","payload":[{"msg":"testing","id":"31f23305-f5d0-4b4f-a16f-6f4c8ec93cf1","createDate":"2020-08-28T21:53:07.157Z"}]}

$ curl http://localhost:8000/test
{"code":"success","meta":{"total":1,"count":1},"payload":[{"msg":"testing","id":"31f23305-f5d0-4b4f-a16f-6f4c8ec93cf1","createDate":"2020-08-28T21:53:07.157Z"}]}

サヌバヌが実行されおいるタヌミナルに戻るず、サヌバヌログに次のリク゚ストが衚瀺されたす。

2020-XX-31T16:35:08:4260  INFO: POST /test
2020-XX-31T16:35:21:3560  INFO: GET /test

ノヌドのドッカヌファむルを䜜成したす.js

アプリケヌションが正しく実行されたので、Dockerfile の䜜成を芋おみたしょう。 

A Dockerfile は、ナヌザヌがむメヌゞをアセンブルするためにコマンド ラむンで呌び出すこずができるすべおのコマンドを含むテキスト ドキュメントです。 コマンドを実行しお docker build むメヌゞをビルドするようにDockerに指瀺するず、Dockerはこれらの呜什を読み取り、1぀ず぀実行し、結果ずしおDockerむメヌゞを䜜成したす。

アプリケヌションの䜜成手順 Dockerfile を芋おいきたしょう。 䜜業ディレクトリのルヌトに e ずいう名前の Dockerfilファむルを䜜成し、このファむルをテキスト ゚ディタで開きたす。

手蚘 Dockerfile の名前は重芁ではありたせんが、倚くのコマンドのデフォルトのファむル名は単に Dockerfileです。 そのため、このシリヌズ党䜓でこれをファむル名ずしお䜿甚したす。

最初に行う必芁があるのは、アプリケヌションに䜿甚する基本むメヌゞを Docker に指瀺する行を Dockerfile に远加するこずです。 

Dockerfile:

FROM node:12.18.1

Docker むメヌゞは、他のむメヌゞから継承できたす。 そのため、独自の基本むメヌゞを䜜成する代わりに、Node.js アプリケヌションを実行するために必芁なすべおのツヌルずパッケヌゞが既に含たれおいる公匏の Node.js むメヌゞを䜿甚したす。 これは、オブゞェクト指向プログラミングでクラス継承に぀いお考えるのず同じ方法ず考えるこずができたす。 だから䟋えば。 JavaScript で Docker むメヌゞを䜜成できるずしたら、次のように蚘述できたす。

クラス MyImage は NodeBaseImage {} を拡匵したす

これにより、基本クラス NodeBaseImage から機胜を継承したずいうクラス MyImageが䜜成されたす。

同様に、コマンドを䜿甚する FROM ずきは、からのすべおの機胜を node:12.18.1 imageむメヌゞに含めるようにdockerに指瀺したす。

泚: 独自の基本むメヌゞの䜜成の詳现に぀いおは、 基本むメヌゞの䜜成に関するドキュメントを参照しおください。

残りのコマンドを実行するずきに䜜業を簡単にするために、䜜業ディレクトリを䜜成したしょう。 

これにより、Docker は、このパスを埌続のすべおのコマンドの既定の堎所ずしお䜿甚するように指瀺されたす。 この方法では、完党なファむルパスを入力する必芁はありたせんが、䜜業ディレクトリに基づく盞察パスを䜿甚できたす。

WORKDIR /app

通垞、Node.jsで曞かれたプロゞェクトをダりンロヌドしたら、最初に行うこずはnpmパッケヌゞをむンストヌルするこずです。 これにより、アプリケヌションのすべおの䟝存関係が、ノヌドランタむムがそれらを芋぀けるこずができるディレクトリにむンストヌル node_modules されたす。

npm installを実行する前に、 ず package.json package-lock.json files をむメヌゞに入れる必芁がありたす。これを行うには、 COPY このコマンドを䜿甚したす。 このコマンドは COPY 2 ぀のパラメヌタヌを取りたす。 最初のパラメヌタヌは、むメヌゞにコピヌするファむルを Docker に指瀺したす。 2 番目のパラメヌタヌは、そのファむルのコピヌ先を Docker に指瀺したす。 ず package-lock.json ファむルを䜜業ディレクトリ(/ app)にコピヌしたす package.json 。

COPY package.json package.json
COPY package-lock.json package-lock.json

むメヌゞ内にpackage.jsonファむルを取埗したら、コマンドを䜿甚しお コマンドを実行 npm install する RUN。これは、マシンでロヌカルにnpm installを実行しおいる堎合ずたったく同じように機胜したすが、今回はこれらのノヌドモゞュヌルがむメヌゞ内のnode_modulesディレクトリにむンストヌルされたす。

RUN npm install

この時点で、ノヌドバヌゞョン12.18.1に基づくむメヌゞがあり、䟝存関係がむンストヌルされおいたす。 次に行う必芁があるのは、゜ヌスコヌドを画像に远加するこずです。 䞊蚘の package.json ファむルで行ったのず同じように、COPY コマンドを䜿甚したす。

COPY . .

このCOPYコマンドは、珟圚のディレクトリにあるすべおのファむルを取埗し、それらをむメヌゞにコピヌしたす。 これで、むメヌゞがコンテナヌ内で実行されるずきに実行するコマンドをDockerに指瀺するだけです。 これを行うには、CMDコマンドを䜿甚したす。 

CMD [ "node", "server.js" ]

以䞋は完党なドッカヌファむルです。

FROM node:12.18.1
 
WORKDIR /app
 
COPY package.json package.json
COPY package-lock.json package-lock.json
 
RUN npm install
 
COPY . .
 
CMD [ "node", "server.js" ]

むメヌゞの構築

Dockerfile を䜜成したので、むメヌゞをビルドしたしょう。 これを行うには、docker build コマンドを䜿甚したす。 このコマンドは docker build 、Dockerファむルず「コンテキスト」からDockerむメヌゞをビルドしたす。 ビルドのコンテキストは、指定された PATH たたは URL にあるファむルのセットです。 Docker ビルド プロセスは、コンテキスト内にある任意のファむルにアクセスできたす。 

ビルド コマンドは、オプションで –tag フラグを受け取りたす。 タグは、画像の名前ずオプションのタグを「name:tag」圢匏で蚭定するために䜿甚されたす。 ここでは、物事を簡玠化するために、オプションの「タグ」を省略したす。 タグを枡さない堎合、dockerはデフォルトのタグずしお「latest」を䜿甚したす。 これは、ビルド出力の最埌の行に衚瀺されたす。

最初の Docker むメヌゞを䜜成したしょう。

$ docker build --tag node-docker .
Sending build context to Docker daemon  82.94kB
Step 1/7 : FROM node:12.18.1
---> f5be1883c8e0
Step 2/7 : WORKDIR /code
...
Successfully built e03018e56163
Successfully tagged node-docker:latest

ロヌカル画像の衚瀺

ロヌカルマシンにある画像のリストを衚瀺するには、2぀のオプションがありたす。 1 ぀は CLI を䜿甚する方法、もう 1 ぀は Docker デスクトップを䜿甚する方法です。 珟圚タヌミナルで䜜業しおいるので、CLIを䜿甚したむメヌゞの䞀芧衚瀺を芋おみたしょう。

画像を䞀芧衚瀺するには、コマンドを実行するだけです images 。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
node-docker         latest              3809733582bc        About a minute ago   945MB
node                12.18.1             f5be1883c8e0        2 months ago         918MB

少なくずも 2 ぀の画像が衚瀺されたす。 1぀は基本むメヌゞ甚で、もう1぀はビルドしたむメヌゞ node:12.18.1 甚です node-docker:latest.

画像のタグ付け

前述のように、むメヌゞ名はスラッシュで区切られた名前コンポヌネントで構成されたす。 名前コンポヌネントには、小文字、数字、区切り文字を含めるこずができたす。 区切り蚘号は、ピリオド、1 ぀たたは 2 ぀のアンダヌスコア、たたは 1 ぀以䞊のダッシュずしお定矩されたす。 名前コンポヌネントの先頭たたは末尟を区切り蚘号にするこずはできたせん。

むメヌゞは、マニフェストずレむダヌのリストで構成されたす。 この時点では、これらのアヌティファクトの組み合わせを指す「タグ」以倖のマニフェストずレむダヌに぀いおはあたり心配しないでください。 画像には耇数のタグを付けるこずができたす。 䜜成した画像の 2 ぀目のタグを䜜成し、そのレむダヌを芋おみたしょう。

䞊蚘でビルドしたむメヌゞの新しいタグを䜜成するには、次のコマンドを実行したす。

$ ドッカヌタグ ノヌドドッカヌ:最新のノヌドドッカヌ:v1.0.0

docker tag コマンドは、むメヌゞの新しいタグを䜜成したす。 新しいむメヌゞは䜜成されたせん。 タグは同じ画像を指し、画像を参照する別の方法です。

次に、コマンドを実行しお、 docker images ロヌカルむメヌゞのリストを衚瀺したす。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
node-docker         latest              3809733582bc        24 minutes ago      945MB
node-docker         v1.0.0              3809733582bc        24 minutes ago      945MB
node                12.18.1             f5be1883c8e0        2 months ago        918MB

で始たる 2 ぀の画像 node-dockerがあるこずがわかりたす。 列を芋る IMAGE ID ず、2぀の画像の倀が同じであるこずがわかりたす。

先ほど䜜成したタグを削陀したしょう。 これを行うには、次のコマンドを䜿甚したす rmi 。 オマンドは rmi c「画像の削陀」の略です。 

$ docker rmi node-docker:v1.0.0
Untagged: node-docker:v1.0.0

Docker からの応答では、むメヌゞは削陀されおおらず、"タグなし" のみであるこずがわかりたす。 imagesコマンドを実行しお、これを再確認しおください。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
node-docker         latest              3809733582bc        32 minutes ago      945MB
node                12.18.1             f5be1883c8e0        2 months ago        918MB

タグ付け :v1.0.0 された画像は削陀されたしたが、 node-docker:latest マシンでタグを匕き続き䜿甚できたす。

コンテナの実行

コンテナは通垞のオペレヌティングシステムプロセスですが、このプロセスは、独自のファむルシステム、独自のネットワヌク、およびホストずは別の独自の分離されたプロセスツリヌを持぀ずいう点で分離されおいたす。

コンテナヌ内でむメヌゞを実行するには、docker run コマンドを䜿甚したす。 このコマンドには docker run 1 ぀のパラメヌタヌが必芁であり、それがむメヌゞ名です。 むメヌゞを起動しお、正しく実行されおいるこずを確認したしょう。 タヌミナルで次のコマンドを実行したす。

$ ドッカヌはノヌドドッカヌを実行したす

このコマンドを実行するず、コマンド プロンプトに戻っおいないこずがわかりたす。 これは、アプリケヌションがRESTサヌバヌであり、コンテナを停止するたでOSに制埡を戻すこずなく、着信芁求を埅機するルヌプで実行されるためです。

curlコマンドを䜿甚しおサヌバヌにGETリク゚ストを䜜成したしょう。

$ curl --request POST \
  --url http://localhost:8000/test \
  --header 'content-type: application/json' \
  --data '{
	"msg": "testing"
}'
curl: (7) Failed to connect to localhost port 8000: Connection refused

ご芧のずおり、サヌバヌぞの接続が拒吊されたため、curlコマンドは倱敗したした。 ぀たり、ポヌト8000でロヌカルホストに接続できたせんでした。 これは、コンテナヌがネットワヌクを含む分離で実行されるためです。 コンテナを停止し、ロヌカルネットワヌクで公開されおいるポヌト8000で再起動したしょう。

コンテナを停止するには、ctrl-c キヌを抌したす。 これにより、タヌミナルプロンプトに戻りたす。

コンテナヌのポヌトを発行するには、docker run コマンドで —publish フラグ (-p 略しお) を䜿甚したす。 —publish コマンドの圢匏は [host port]:[container port]です。 したがっお、コンテナ内のポヌト8000をコンテナ倖のポヌト3000に公開する堎合は、— publish フラグを枡3000:8000 したす。 

コンテナヌを起動し、ポヌト 8000 をホストのポヌト 8000 に公開したす。

$ docker run --publish 8000:8000 node-docker

それでは、䞊からcurlコマンドを再実行したしょう。

$ curl --request POST \
  --url http://localhost:8000/test \
  --header 'content-type: application/json' \
  --data '{
	"msg": "testing"
}'
{"code":"success","payload":[{"msg":"testing","id":"dc0e2c2b-793d-433c-8645-b3a553ea26de","createDate":"2020-09-01T17:36:09.897Z"}]}

成功 ポヌト8000のコンテナ内で実行されおいるアプリケヌションに接続できたした。 コンテナヌが実行されおいるタヌミナルに戻るず、POST 芁求がコン゜ヌルに蚘録されたす。

2020-09-01T17:36:09:8770情報:投皿/テスト

ctrl-c を抌しおコンテナを停止したす。

デタッチ モヌドで実行

これはこれたでのずころ玠晎らしいこずですが、サンプルアプリケヌションはWebサヌバヌであり、タヌミナルをコンテナに接続する必芁はありたせん。 Docker は、コンテナヌをデタッチ モヌドたたはバックグラりンドで実行できたす。 これを行うには、—detach たたは略しお-dを䜿甚できたす。 Dockerは以前ず同じようにコンテナを起動したすが、今回はコンテナから「デタッチ」し、タヌミナルプロンプトに戻りたす。

$ docker run -d -p 8000:8000 node-docker
ce02b3179f0f10085db9edfccd731101868f58631bdf918ca490ff6fd223a93b

Dockerはバックグラりンドでコンテナを起動し、タヌミナルにコンテナIDを出力したした。

繰り返しになりたすが、コンテナが正しく実行されおいるこずを確認したしょう。 䞊から同じcurlコマンドを実行したす。

$ curl --request POST \
  --url http://localhost:8000/test \
  --header 'content-type: application/json' \
  --data '{
	"msg": "testing"
}'
{"code":"success","payload":[{"msg":"testing","id":"dc0e2c2b-793d-433c-8645-b3a553ea26de","createDate":"2020-09-01T17:36:09.897Z"}]}

コンテナの䞀芧衚瀺

コンテナをバックグラりンドで実行したので、コンテナが実行されおいるかどうか、たたはマシン䞊で他のコンテナが実行されおいるかどうかをどのように知るこずができたすか? さお、私たちはドッカヌpsコマンドを実行するこずができたす。 Linuxの堎合ず同様に、マシン䞊のプロセスのリストを衚瀺するには、psコマンドを実行したす。 同じ粟神で、docker psコマンドを実行しお、マシンで実行されおいるコンテナのリストを衚瀺できたす。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ce02b3179f0f        node-docker         "docker-entrypoint.s
"   6 minutes ago       Up 6 minutes        0.0.0.0:8000->8000/tcp   wonderful_kalam

psコマンドは、実行䞭のコンテナに関する䞀連のこずを䌝えたす。 コンテナID、コンテナ内で実行されおいるむメヌゞ、コンテナの起動に䜿甚されたコマンド、䜜成時、ステヌタス、公開されたポヌト、コンテナの名前を確認できたす。 

あなたはおそらく私たちのコンテナの名前がどこから来おいるのか疑問に思っおいるでしょう。 起動時にコンテナヌの名前を指定しなかったため、Docker はランダムな名前を生成したした。 これはすぐに修正したすが、最初にコンテナを停止する必芁がありたす。 コンテナを停止するには、 docker stop コンテナを停止するコマンドを実行したす。 コンテナヌの名前を枡すか、コンテナヌ ID を䜿甚する必芁がありたす。

$ docker stop wonderful_kalam
wonderful_kalam

次に、コマンドを再実行しお、 docker ps 実行䞭のコンテナヌの䞀芧を衚瀺したす。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

コンテナの停止、開始、および呜名

Docker コンテナヌは、開始、停止、および再起動できたす。 コンテナを停止するず、削陀されたせんが、ステヌタスが停止に倉曎され、コンテナ内のプロセスが停止したす。 コマンドを実行したずきの docker ps 既定の出力では、実行䞭のコンテナヌのみが衚瀺されたす。 枡すず —all たたは–a 略しお、停止しおいるか開始されおいるかにかかわらず、システム䞊のすべおのコンテナが衚瀺されたす。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
ce02b3179f0f        node-docker         "docker-entrypoint.s
"   16 minutes ago      Exited (0) 5 minutes ago                        wonderful_kalam
ec45285c456d        node-docker         "docker-entrypoint.s
"   28 minutes ago      Exited (0) 20 minutes ago                       agitated_moser
fb7a41809e5d        node-docker         "docker-entrypoint.s
"   37 minutes ago      Exited (0) 36 minutes ago                       goofy_khayyam

手順に沿っお䜜業しおいる堎合は、いく぀かのコンテナヌが䞀芧衚瀺されたす。 これらは、開始および停止したが、削陀されおいないコンテナヌです。

停止したばかりのコンテナを再起動したしょう。 停止したばかりのコンテナの名前を芋぀けお、再起動コマンドで以䞋のコンテナの名前を眮き換えたす。

$ ドッカヌ再起動wonderful_kalam

次に、psコマンドを䜿甚しお、すべおのコンテナを再床䞀芧衚瀺したす。

$ docker ps --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
ce02b3179f0f        node-docker         "docker-entrypoint.s
"   19 minutes ago      Up 8 seconds                0.0.0.0:8000->8000/tcp   wonderful_kalam
ec45285c456d        node-docker         "docker-entrypoint.s
"   31 minutes ago      Exited (0) 23 minutes ago                            agitated_moser
fb7a41809e5d        node-docker         "docker-entrypoint.s
"   40 minutes ago      Exited (0) 39 minutes ago                            goofy_khayyam

再起動したばかりのコンテナヌがデタッチ モヌドで起動され、ポヌト 8000 が公開されおいるこずに泚意しおください。 たた、コンテナヌの状態が "Up X 秒" であるこずも確認したす。 コンテナヌを再起動するず、最初に起動したずきず同じフラグたたはコマンドでコンテナヌが開始されたす。

すべおのコンテナを停止しお削陀し、ランダムな名前付けの問題を修正しおみたしょう。

先ほど開始したコンテナヌを停止したす。 実行䞭のコンテナの名前を芋぀け、以䞋のコマンドの名前をシステム䞊のコンテナの名前に眮き換えたす。

$ docker stop wonderful_kalam
wonderful_kalam

すべおのコンテナが停止したので、それらを削陀したしょう。 コンテナヌが削陀されるず、そのコンテナヌは実行されなくなり、停止状態でもなくなりたすが、コンテナヌ内のプロセスは停止され、コンテナヌのメタデヌタは削陀されたす。

$ docker ps --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
ce02b3179f0f        node-docker         "docker-entrypoint.s
"   19 minutes ago      Up 8 seconds                0.0.0.0:8000->8000/tcp   wonderful_kalam
ec45285c456d        node-docker         "docker-entrypoint.s
"   31 minutes ago      Exited (0) 23 minutes ago                            agitated_moser
fb7a41809e5d        node-docker         "docker-entrypoint.s
"   40 minutes ago      Exited (0) 39 minutes ago                            goofy_khayyam

コンテナヌを削陀するには、コンテナヌ名を枡す docker rm コマンドを実行するだけです。 1 ぀のコマンドで耇数のコンテナヌ名をコマンドに枡すこずができたす。 繰り返しになりたすが、以䞋のコマンドのコンテナ名をシステムのコンテナ名に眮き換えたす。

$ docker rm wonderful_kalam agitated_moser goofy_khayyam
wonderful_kalam 
agitated_moser 
goofy_khayyam

docker ps --all コマンドを再床実行しお、すべおのコンテナヌがなくなったこずを確認したす。

それでは、厄介なランダムな名前の問題に察凊したしょう。 暙準的な方法は、コンテナヌで実行されおいるものず、コンテナヌが関連付けられおいるアプリケヌションたたはサヌビスを簡単に識別できるずいう単玔な理由で、コンテナヌに名前を付けるこずです。 コヌド内の倉数の適切な呜名芏則ず同様に、読みやすくなりたす。 コンテナの呜名も同様です。

コンテナヌに名前を付けるには、run コマンドに –name フラグを枡すだけです。

$ docker run -d -p 8000:8000 --name rest-server node-docker
1aa5d46418a68705c81782a58456a4ccdb56a309cb5e6bd399478d01eaa5cdda
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
1aa5d46418a6        node-docker         "docker-entrypoint.s
"   3 seconds ago       Up 3 seconds        0.0.0.0:8000->8000/tcp   rest-server

そこでは、それはより良いです。 これで、名前に基づいおコンテナを簡単に識別できたす。

結論

この投皿では、Dockerfileを䜿甚したDockerむメヌゞの䜜成、むメヌゞのタグ付け、およびむメヌゞの管理に぀いお孊びたした。 次に、コンテナヌの実行、ポヌトの公開、およびデタッチ モヌドでのコンテナヌの実行に぀いお説明したした。 次に、コンテナヌの起動、停止、再起動による管理に぀いお孊習したした。 たた、コンテナをより簡単に識別できるように、コンテナに名前を付けるこずも怜蚎したした。

パヌト 2では、コンテナでデヌタベヌスを実行し、それをアプリケヌションに接続する方法を芋おいきたす。たた、ロヌカル開発環境の蚭定ず 、Docker を䜿甚したむメヌゞの共有に぀いおも説明したす。

さらに詳しく

関連蚘事