docker deploy nodejs project
この記事は、Dockerを使用したnodejsプロジェクトのデプロイメントについてです。
dockerを使ったプロジェクトのデプロイは、大きく3つのステップに分かれます。
1. nodejsプロジェクトの作成
書く パッケージ.json プロジェクトに依存するものをインストールするために
{
"name": "expressPro",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"address": "^4.16.3"
}
}
サービス起動ファイル server.js
var express = require('express');
var app = express();
app.use(express.static('dist'));// means that the dist directory is a static resource
var server = app.listen(3333, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
これで、シンプルなWebサービスを実現するためのnodejsプロジェクトが完成しました。
2. 書く Dockerfile と ドッカーリグノア
Dockerfile
#Reference mirrors
FROM node:8.9.4-alpine
#Author
MAINTAINER mkq
#execute the command to create the folder
RUN mkdir -p /usr/src/workPlace_express/expressPro
#Copy the dist directory to the mirror
COPY . /dist /usr/src/workPlace_express/expressPro/dist/
COPY package.json /usr/src/workPlace_express/expressPro
COPY server.js /usr/src/workPlace_express/expressPro
# Specify the working directory
WORKDIR /usr/src/workPlace_express/expressPro
#Install dependencies and build node application
RUN npm install
#Configure environment variables
ENV HOST 0.0.0.0
ENV PORT 3333
#define the default port of the application
EXPOSE 3333
#Run the program command
CMD ["node","server.js"]
ドッカーリグノア
# Logs
logs
*.log
npm-debug.log*
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules
jspm_packages
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
.idea
.node_modules
node_modules
.vscode
これでパッケージイメージの準備は完了です
3. パッケージのミラーリング
以下のコマンドを実行し、Dockerfileと同レベルのパスでイメージを構築します。
# docker build -t docker_demo1 .
.は省略できないことに注意してください
何もなければ、無事にdockerイメージをビルドできました。あとは以下のコマンドでビルドされたイメージを見ることができます。
docker images
docker run -d -p 9000:3333 docker_demo1
<イグ
イメージがビルドされたら、次のコマンドでイメージからコンテナを起動することができます。
docker ps
-d はバックグラウンドで実行することを意味します。-この場合、ホストマシンのポート9000を、Dockerfileが公開するインターフェイスである3333にマッピングしています。
次に、次のコマンドを使用して、起動したコンテナを確認します。
1. docker images [options "o">] [name]
-a List all images (including process images).
-f Filter images, e.g.: -f ['dangling=true'] List only images that meet the
dangling=true] lists only mirrors that satisfy the dangling=true condition.
--no-trunc to show full mirror IDs.
-q lists only mirror IDs.
--tree lists all commit histories of mirrors in a tree structure.
2. docker ps
List all running containers.
-a List all containers (including dormant mirrors).
--before="nginx" List containers created before a container, accepting container name and ID as arguments.
--since="nginx" lists containers created after a certain container, accepting the container name and ID as arguments.
-f [exited=<int>] List containers that satisfy
exited=<int> condition; -f [exited=<int>] Lists containers that satisfy the exited=<int> condition.
-l lists only the last container created.
--no-trunc Show the full container ID.
-n=4 lists the four most recently created containers.
-q lists only the container IDs.
-s shows the container size.
3. docker rmi
docker rmi [options "o">] <image> "o"> [image...]
docker rmi nginx:latest postgres:latest python:latest
Removes one or more specified images from the local area.
-f forcibly remove the image, even if it is in use.
--no-prune does not remove the process image of the image, but removes it by default.
To remove all images
docker rmi $(docker images -q)
4. docker rm
docker rm [options "o">] <container> "o"> [container...]
docker rm nginx-01 nginx-02 db-01 db-02
sudo docker rm -l /webapp/redis
-f forcibly remove the container, even if it is running.
-l removes the network connection between containers, not the container itself.
-v removes the space associated with the container.
docker rm $(docker ps -aq) : Remove all containers
docker stop [NAME]/[CONTAINER ID]: Quit the containers.
docker kill [NAME]/[CONTAINER ID]: force stop a container.
コンテナ ID イメージ コマンド 作成 ステータス ポート名
5512f616077d docker_demo "node server.js" 22 時間前 Up 22 時間 0.0.0.0:9000->3333/tcp reverent_driscoll
a76391d51230 docker_demo "node server.js" 22 時間前 Up 22 時間 0.0.0.0:3333->3333/tcp lucid_edison
これで、dockerを使用してnodeアプリケーションをデプロイしました。そして、ホストの ip:9000 を介して、コンテナ上のポート 3333 のサービスにアクセスすることができます。
4. ドッカー共通コマンド
1. docker images [options "o">] [name]
-a List all images (including process images).
-f Filter images, e.g.: -f ['dangling=true'] List only images that meet the
dangling=true] lists only mirrors that satisfy the dangling=true condition.
--no-trunc to show full mirror IDs.
-q lists only mirror IDs.
--tree lists all commit histories of mirrors in a tree structure.
2. docker ps
List all running containers.
-a List all containers (including dormant mirrors).
--before="nginx" List containers created before a container, accepting container name and ID as arguments.
--since="nginx" lists containers created after a certain container, accepting the container name and ID as arguments.
-f [exited=<int>] List containers that satisfy
exited=<int> condition; -f [exited=<int>] Lists containers that satisfy the exited=<int> condition.
-l lists only the last container created.
--no-trunc Show the full container ID.
-n=4 lists the four most recently created containers.
-q lists only the container IDs.
-s shows the container size.
3. docker rmi
docker rmi [options "o">] <image> "o"> [image...]
docker rmi nginx:latest postgres:latest python:latest
Removes one or more specified images from the local area.
-f forcibly remove the image, even if it is in use.
--no-prune does not remove the process image of the image, but removes it by default.
To remove all images
docker rmi $(docker images -q)
4. docker rm
docker rm [options "o">] <container> "o"> [container...]
docker rm nginx-01 nginx-02 db-01 db-02
sudo docker rm -l /webapp/redis
-f forcibly remove the container, even if it is running.
-l removes the network connection between containers, not the container itself.
-v removes the space associated with the container.
docker rm $(docker ps -aq) : Remove all containers
docker stop [NAME]/[CONTAINER ID]: Quit the containers.
docker kill [NAME]/[CONTAINER ID]: force stop a container.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例