- discovery.type=single-node
ports: # Expose Elasticsearch ports
- "9300:9300"
- "9200:9200"
volumes: # Define seperate volume for Elasticsearch data
esdata:
此文件定义应用栈,而不需要在本地宿主机安装Elasticsearch、Node.js、或者Nginx。每个容器都对宿主机开放相应端口,以便从宿主机访问和排错Node API,Elasticsearch实例和前端应用。
2.4 添加Dockerfile
本文使用官方的Nginx和Elasticsearch镜像,但是需要重新为Node.js创建自己的镜像。
在应用根目录定义一个简单的Dockerfile配置文件。
# Use Node v8.9.0 LTS
FROMnode:carbon
# Setup app working directory
WORKDIR /usr/src/app
# Copy package.json and package-lock.json
COPY package *.json./
# Install app dependencies
RUN npm install
# Copy sourcecode
COPY . .
# Start app
CMD [ "npm", "start"]
此Docker配置文件中将应用源码拷贝进来,安装了NPM依赖包,形成了自己的镜像。同样需要添加一个.dockerignore文件,避免不需要的文件被拷入。
node_modules/
npm-debug. log
books/
public/
注意:不需要将node_modules拷入,因为我们后续要用npm install来安装这些进程。如果拷贝node_modules到容器中容易引起兼容性问题。例如在macOS上安装bcrypt包,如果将此module拷入Ubuntu容器就会引起操作系统不匹配问题。
2.5 添加基础文件
测试配置文件前,还需要往应用目录拷入一下占位文件。在public/index.html中加入如下基础配置信息:
<html><body>Hello World From The Frontend Container </body></html>
下一步,在server/app.js中加入Node.js的应用文件。
constKoa = require( 'koa')
constapp = newKoa()
app.use( async(ctx, next) => {
ctx.body = 'Hello World From the Backend Container'
})
constport = process.env.PORT || 3000
app.listen(port, err => {
if(err) console.error(err)
console.log( `App Listening on Port ${port}`
})
最后,加入package.json节点配置文件:
{
"name": "guttenberg-search",
"version": "0.0.1",
"deion": "Source code for Elasticsearch tutorial using 100 classic open source books.",
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-88488-3.html
银行如要储蓄存款带动流动资金运转
这人出道几年了
永远崇拜毛主席
黄子韬作词作曲