1. ホーム
  2. ドッカー

docker deploy nodejs project

2022-03-03 04:23:59
<パス

この記事は、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.