創建一個node.js App
首先創建 一個文件夾,名字為docker-node-demo
編寫package.json
進入docker-node-demo
文件夾,創建package.json
文件
這裡使用基於express4.16的node app
{ "name": "docker_web_app", "version": "1.0.0", "description": "Node.js on Docker", "author": "First Last <first.last@example.com>", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.16.1" } }
運行npm install
,此時會出現package-lock.json
文件和node_modules
文件夾
編寫 server.js
創建server.js
文件,
'use strict';const express = require('express');// Constantsconst PORT = 8080;const HOST = '0.0.0.0';// Appconst app = express(); app.get('/', (req, res) => { res.send('Hello world\n'); }); app.listen(PORT, HOST);console.log(`Running on http://${HOST}:${PORT}`);
這裡主要是設置端口,路由等等,以及運行的時候會在控制台輸出一句Running on http://${HOST}:${PORT}
編寫Dockerfile文件
創建一個名為Dockerfile的文件,文件沒有後綴
根據官方,是使用版本為carben的node
FROM node:carbon# Create app directoryWORKDIR /usr/src/app# Install app dependencies# A wildcard is used to ensure both package.json AND package-lock.json are copied# where available (npm@5+)COPY package*.json ./ RUN npm install# If you are building your code for production# RUN npm install --only=production# Bundle app sourceCOPY . . EXPOSE 8080 CMD [ "npm", "start" ]
創建 .dockerignore 文件
這個文件的作用和.git差不多,目的是讓docker打包的時候略過部分文件
node_modules npm-debug.log
創建 image
這裡需要在docker中操作windows目錄下的文件
先將
docker-node-demo
文件夾設置分享,具體操作傳送門:https://www.jianshu.com/p/cf03495a59f7
使用Xshell連接docker,並且掛載分享目錄,完成之後進入到分享目錄中開始build一個名為
docker-node-demo
的imagedocker build -t docker-node-demo .
查看image
docker images
可以看到已經多出來一個image了運行image
docker run -p 3000:8080 -d docker-node-demo
這裡的意思是將image中8080端口映射到本地3000端口打開網頁
理所當然的打開http://localhost:3000/
發現什麼都沒有運行起來,一番搜尋之後發現,我們在linux環境中運行的localhost並非windows的localhost,但是通常都可以通過這個IP訪問192.168.99.100
即可以通過192.168.99.100:3000
訪問app的頁面
一個小的node-demo完成了!
作者:脫兔
链接:https://www.jianshu.com/p/85665cd5202f