基于Koa2框架的项目搭建及Docker部署


Koa是基于 Node.js 平台的下一代 web 开发框架,由express原班人马打造,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。

此文是简单介绍使用kos2进行项目的基本搭建以及基于Docker打包发布镜像

搭建环境

  1. 因为此框架是基于node.js的,安装node是必须的进行的第一步,这里不再详细介绍

  2. 安装koa(我们使用淘宝镜像进行安装)

    npm install koa --save
  3. 安装koa2项目生成器并创建项目

    npm install koa-generator -g
    koa2 myPro
    cd myPro
    npm install

    koa2 myPro用来生成项目的基本的项目架构

    img

  4. 启动项目服务

    npm start 

    访问http://localhost:3000/

    img

到这里,项目初始化成功。

Docker如何部署koa项目

  1. 创建Dockerfile文件

Dockerfile是由一系列命令和参数构成的脚本,一个Dockerfile里面包含了构建整个image的完整命令。Docker通过docker build执行Dockerfile中的一系列命令自动构建image.
表示过滤该类型的文件。类似git的.gitignore

在.dockerignore文件里面写入代码:

# 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

在Dockerfile文件中写入一下代码:

#制定node镜像的版本
FROM node:12-alpine
#声明作者
MAINTAINER FeynmanLoo
#移动当前目录下面的文件到app目录下
ADD . /app/
#进入到app目录下面,类似cd
WORKDIR /app
#安装依赖
RUN npm install
#对外暴露的端口
EXPOSE 3000
#程序启动脚本
CMD ["npm", "start"]
  1. 构建镜像

    使用build命令构造镜像,注意后面那个.不能少。

    docker build -t docker_demo .
    robin:docker_demo robin$ docker build -t docker_demo .
    Sending build context to Docker daemon  39.94kB
    Step 1/7 : FROM node:8.9-alpine
    ---> 406f227b21f5
    Step 2/7 : MAINTAINER robin
    ---> Using cache
    ---> 78d6cdbcfee2
    Step 3/7 : ADD . /app/
    ---> 2cb30678612d
    Step 4/7 : WORKDIR /app
    Removing intermediate container e51377081039
    ---> c2b7d0f37d2d
    Step 5/7 : RUN npm install
    ---> Running in da0c3946ca8d
    npm notice created a lockfile as package-lock.json. You should commit this file.
    added 38 packages in 3.323s
    Removing intermediate container da0c3946ca8d
    ---> eecee87f10e2
    Step 6/7 : EXPOSE 3000
    ---> Running in f3973cc168a4
    Removing intermediate container f3973cc168a4
    ---> 2671a4c6deb4
    Step 7/7 : CMD ["npm", "start"]
    ---> Running in dec529f754aa
    Removing intermediate container dec529f754aa
    ---> 6ec73793d353
    Successfully built 6ec73793d353
    Successfully tagged docker_demo:latest

等待镜像构造完成。然后使用 images命令查看镜像。

D8AuKzYdF5nhycI

此时可以看到images已经构造完成。现在开始启动images,并测试。

#启动镜像 -d表示后台执行,-p 9000:3000表示指定本地的9000端口隐射到容器内的3000端口,docker_demo为镜像名称
docker run -d -p 9000:3000 docker_demo
#查看容器
docker ps

XOPKFAQYVRvMm3i

此时浏览器打开http://localhost:9000/,如果如图所示。表示容器运行正常。

vGBfboaACP8mV1O

如果此时本地无法打开。可以使用log命令查看日志。根据日志修改对应出现的对方。

到这里,整个基于Koa2框架的项目搭建及Docker部署,到这里结束。


文章作者: Feynman Loo
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Feynman Loo !
评论
  目录