Docker部署nuxtjs

2020-04-27 16:59:23

参考地址 NuxtJS使用Docker容器部署

1.普通Nuxt编译/发布流程

编译命令

NuxtJS 框架提供了如下命令用作开发或部署

命令描述
nuxt启动一个热加载的Web服务器(开发模式) localhost:3000。
nuxt build利用webpack编译应用,压缩JS和CSS资源(发布用)
nuxt start以生产模式启动一个Web服务器 (nuxt build 会先被执行)
nuxt generate编译应用,并依据路由配置生成对应的HTML文件 (用于静态站点的部署)。

你可以将这些命令添加至 package.json

"scripts": {
  "dev": "nuxt",
  "build": "nuxt build",
  "start": "nuxt start",
  "generate": "nuxt generate"
}

然后通过 NPM进行编译

npm run dev //启动热加载开发模式
npm run build //编译

发布目录所需文件

将一下文件拷贝至服务器目录/app |名称|描述| |-|-| |.nuxt|编译后生成的目录,开发模式和发布模式通用,注意发布前使用npm run build 防止将dev目录发布| |static| 静态资源文件,通过/可直接访问| |package.json|npm 包管理配置文件| |nuxt.config.js|Nuxt.js 默认的配置涵盖了大部分使用情形,可通过 nuxt.config.js 来覆盖默认的配置。| |node_modules|依赖模块|

安装NPM包

服务器需要node环境

cd /app
npm install

内网环境你也可以把node_modules直接复制到/app目录

最后启动Nuxt

npm run start

Listening on: http://your-ip:80/

nuxt.config.js server配置介绍 端口 HTTPS socket等

2.Docker 部署Nuxt

使用Dockerfile构建具备Node环境的容器镜像

1.容器基于 Dockerhub Node alpine官方镜像进行构建
2.并且安装busyboxbash工具

Busybox 官网 BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件

创建文件 Dockerfile

#使用node:8.16-alpine 作为基础进行构建
FROM node:8.16-alpine 

#创建/app 目录作为部署目录,创建容器实例时,挂载此目录
RUN mkdir -p /app

#更改alpine的安装源指向阿里源
RUN echo "http://mirrors.aliyun.com/alpine/v3.9/main/" > /etc/apk/repositories

#安装 bash 和 busybox
RUN apk update \
        && apk upgrade \
        && apk add --no-cache bash \
        bash-doc \
        bash-completion \
        && /bin/bash \
        && apk add --no-cache busybox \
        && rm -rf /var/cache/apk/*
#移动工作目录到 /app
WORKDIR /app

#设置node环境变量为production
ENV NODE_ENV=production

#设置容器启动时执行的命令
ENTRYPOINT [ "npm","start" ]

生成镜像

执行命令时,需要cd到Dockerfile所在目录,特别注意命令最后有一个. 我之前被坑过 docker build -t yourImageName:yourVersionTag .

启动docker容器,挂载宿主目录

1.复制.nuxtstaticpackage.jsonnuxt.config.js 到 /root/nuxt-ssr目录(宿主机目录)
2.执行命令

docker run --name nuxt -p 8080:80 -d --restart=unless-stopped -v /root/docker-mount/dev-ssr:/app  yourImageName:yourVersionTag

命令参数 --name ssr 给容器起个别名 ssr
-p 8080:80 映射容器的80端口到主机8080端口,也可以不给,但是windows下不能直接ping通容器
-d 创建容器后,在后台运行,如果不加退出会话后,容器会终止运行 --restart=unless-stopped 指定容器在异常终止后重启,防止挂掉没人管 -v /root/nuxt-ssr:/app 挂载宿主目录/root/nuxt-ssr到容器的/app目录

完成

现在访问localhost:8080即你的nuxt容器了


  • 2019-10-15 05:53:20

    xUtils 里的DbUtils使用心得

    使用xUtils做Android数据库开发非常简便和得心应手,而且它本身还支持很多查询功能,比如一对多,select count和自定义sql查询等,并且支持事务(默认关闭) 下面是官方sample给的代码和我的一些使用心得 首先是两个实体类,对应两张表,这两张表中有一对多的关系

  • 2019-10-15 09:18:48

    腾讯 Android 面试笔试总结

    Activity中的几种启动模式 Android消息机制 IntentService 事件分发 Android性能优化、内存优化 内存优化 View的绘制 Eventbus原理 Rxjava的操作符有哪些,说说他们的作用 线程锁 锁方法和类对象啥的有啥区别 AsyncTask原理 说说MVP和MVVM的特点 Android中用到的观察者模式有哪些地方 说说google新出的Lifecycle框架 okhttp原理 Retrofit原理 RecyclerView源码、缓存分析 Binder机制 Android Jetpack Kotlin Activity中的几种启动模式

  • 2019-10-15 09:20:49

    SpringBoot注解梳理

    @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。 @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。 @EnableAutoConfiguration 自动配置。 @ComponentScan 组件扫描,可自动发现和装配一些Bean。 @Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。 @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。 @Autowired自动导入。 @PathVariable获取参数。 @JsonBackReference解决嵌套外链问题。 @RepositoryRestResourcepublic配合spring-boot-starter-data-rest使用。

  • 2019-10-15 09:52:00

    动图解释递归,按值传递和按引用传递的区别,线性查找和二分查找,二叉查找树

    对于大部分人,数据结构一直是一个短板,当然我也是,不是学不会,而是容易忘,就拿最简单的排序来说吧,当时学习的时候明明已经弄得很清楚了,过了一段时间不用又忘记了,还要重新再看一遍,不知道有多少小伙伴和我有一样的烦恼。今天让我们用用动图的方式学习一下数据结构中的递归和二分查找吧,这种讲解方式非常生动,而且非常容易记住和理解。