【原】docker部署nodejs

1621 ワード

dockerfileは以下の通りです
FROM hub.c.163.com/public/nodejs:6.11.0

# Create app directory
RUN mkdir -p /home/Service
WORKDIR /home/Service

# Bundle app source
COPY . /home/Service

EXPOSE 3000
ENTRYPOINT  [ "npm", "start" ]
一言ずつ説明します.
FROM hu.c.163.com/public/nodejs:6.11.0 FROMは、ミラーを構築するための基本的なソースミラーです.hu.c.1636.com/public/nodejs:6.11.0これはミラーの名前です.つまり、最初に国内サーバーから引き落とされたImageです.地元にDockerがないと自分のpullのイメージができます.
RUN mkdir-p/home/Service RUNはImage内にフォルダを作成し、将来コードを保存するために使用します.
WORKDIR/home/Service第二句WORKDIRは私達が作成したフォルダを作業目録として作成します.
COPY./home/Serviceの最初の文のCOPYは、本マシンの現在のディレクトリのすべてのファイルをImage/home/Serviceフォルダの下にコピーします.
EXPOSE 8888は私達のウェブアプリが8888ポートを傍受していますので、このポートをホストに暴露して、外部からウェブにアクセスできます.
ENTRY POINT["npm"、"start"はnpm startコマンドを実行します.このコマンドはnode service.jsを実行します.ここで以前インターネットで見たのは使うCMDですが、CMDを使っています.原因は研究中です.ENTRY POINTに変えたらいいです.
ここのstartはnodeプロジェクトのpackage.jsonで定義されています.以下の通りです.
{
  "name": "demo2",
  "version": "0.0.1",
  "description": "demo2",
  "main": "meadowlark.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start":" node meadowlark.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.15.4",
    "mysql": "^2.14.1"
  }
}
Image構築
docker build -t mynodeapp .
イメージを実行
docker run -d -p 8888:8888 ac5