Nodejs doker第2弾練習

5115 ワード

作成されたイメージがアプリケーションの実行中にアクセスできない理由




コンテナとブラウザのポートをマッピングする必要があります。


49160ポート、コンテナから8080にマッピングされます.
ランダムに出発地ポートに入れても大丈夫です.
5000:出発地任意ポート
8080:コンテナ内ポート
docker run -p 5000 : 8080 gusxoqkqh1/nodejs
[sudo] password for hongtae:
Server is running

http://localhost:5000/



指定WORKING DIRECTORY


画像にアクセスするときにルートディレクトリから検索されるように指示すると、WORKDIR/usr/src/appが情報を検索します。


sudo docker run -it gusxoqkqh1/nodejs ls
[sudo] password for hongtae:
Dockerfile dev lib mnt package-lock.json root server.js tmp
bin etc lib64 node_modules package.json run srv usr
boot home media opt proc sbin sys var
FROM node:10
COPY ././
RUN npm install express
WORKDIR/usr/src/app
CMD ["node","server.js"]
(base) hongtae@user:~/デスクトップ/nodejs-docker-app$sudo docker build-t 0 gusxoqkqh 1/nodejs./
sudo docker run -it gusxoqkqh1/nodejs sh

appディレクトリにない場合は自動生成され、既存のディレクトリで実行されますか?

sudo docker run -it gusxoqkqh1/nodejs sh
# ls
Dockerfile  node_modules  package-lock.json  package.json  server.js
# cd /
# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# cd /usr/src/app
# pwd
/usr/src/app
# ls
Dockerfile  node_modules  package-lock.json  package.json  server.js

アプリケーション・ソースの変更による再構築の課題の解決



-dデーモンバックグラウンドに移動して実行し、すぐに離れます.
sudo dockr run -d -p 5000:8000 gusxoqkqh1/nodejs
sudo docker ps

(base) hongtae@user:~/デスクトップ/nodejs-docker-app$sudo docker stop 5704 a 5 b 8 b 0 d 4
5704a5b8b0d4
(base) hongtae@user:~/デスクトップ/nodejs-docker-app$

こんにちは、方佳です。修正して再構築して実行してください。



sudo docker build -t 0gusxoqkqh1/nodejs ./
sudo docker run -d -p 4000:8080 gusxoqkqh1/nodejs
d477feebdce0fdd1074b61dc9652bbc195aafb7a12e9bc385a27364ee0ac2940

copy ././
なぜなら、現在のサーバです.js , package.jsonなどのすべてのファイルはcopyを使用してコンテナに置かれており、ソースが変更された場合はnpm installのインストールを続行する必要があります.

アプリケーション・ソースの変更時に効率的に構築する方法



このように一括する.jsonをコピーすると、ソースコードが変更されてもパッケージ化されます.jsonは修正されないのでnpm installは行いません.
FROM node:10
WORKDIR/usr/src/app
COPY package.json ./
RUN npm install express
COPY ././
CMD ["node","server.js"]

server.jsセクションの再変更



sudo docker build ./
Sending build context to Docker daemon 4.096kB
Step 1/6 : FROM node:10
---> 28dca6642db8
Step 2/6 : WORKDIR/usr/src/app
---> Using cache
---> 501a39617129
Step 3/6 : COPY package.json ./
---> Using cache
---> 083e78cc68a3
Step 4/6 : RUN npm install express
---> Using cache
---> 433d5a846ac1
Step 5/6 : COPY ././
---> e4bdb662d7ba
Step 6/6 : CMD ["node","server.js"]
---> Running in 2dd44668ecf2
Removing intermediate container 2dd44668ecf2
---> 7b3e105b1583
Successfully built 7b3e105b1583
これらの煩わしい仕事はdocvolumeという問題を解決することができます.
ドッキングコンテナでも、音量を利用して地元のものを見続け、何か修正があれば変更します.

変更/usr/src/app=workdirの場合に変更可能
sudo docker run -d -p 4000:8080 -v /usr/src/app/node_modules -v ${pwd}:/usr/src/app gusxoqkqh1/nodejs

df9c2edfb81c6e5f163628557c04b530d243fbb8f947721d8c564b007f767342

だめだよ…?
オペレーティングシステム固有のpwdまたはcdエラーを参照してください.
Windows
  • CMD顧客環境-
  • docker run -d -p 4000:8080 -v/usr/src/app/node_modules -v %cd%:/usr/src/app gusxoqkqh1/nodejs
  • PowerShell環境(Vscode)-
  • docker run -d -p 4000:8080 -v/usr/src/app/node_modules -v ${pwd}:/usr/src/app gusxoqkqh1/nodejs
    Linux = ubuntu
    (sudo) docker run -d -p 4000:8080 -v/usr/src/app/node_modules -v ${pwd}:/usr/src/app gusxoqkqh1/nodejs
    その他(Mac含む)
    docker run -d -p 4000:8080 -v/usr/src/app/node_modules -v $(pwd):/usr/src/app gusxoqkqh1/nodejs
    docker run -d -p 4000:8080 -v/usr/src/app/node_modules -v ${PWD}:/usr/src/app gusxoqkqh1/nodejs