Docker 部署 nuxt.js + nightmare 网站笔记

发布于 2020-11-14 12:45:48 字数 5892 浏览 1470 评论 0

近期用 nuxt.js + nightmare 开发的爬虫工具,发布时部署 Linux 系统。由于 Linux 系统没有图像相关的 GUI 界面,需要安装一系列的依赖,所以才遇到坑。

CentOS 和 Ubuntu 系统都不一样的操作,遇到 docker 创建的各种坑(其实就是不熟悉),以及国内服务器 docker build 时下载速度慢,需要镜像更换等,从不会写 Dockerfile 到懂得使用 Docker 部署 nuxt.js 应用的过程,以下是一些操作记录。

puppeteer 镜像设置为国内

config set PUPPETEER_MIRRORS=https://npm.taobao.org/mirrors
npm install puppeteer

pm2

pm2 启动 nuxt 的方式

pm2 start npm --name nuxt -- start

端口占用

Linux

- netstat -aptn |grep -i 3000  # 查看所有 3000 端口使用情况·
- netstat -ntlp # 查看当前所有 tcp 端口

MacOS

lsof -i:3000
kill 3000

sudo npm 问题

  • sudo ln -s /home/node/bin/npm /usr/bin/npm
  • sudo ln -s /home/node/bin/node /usr/bin/node

防火墙端口

  • firewall-cmd --zone=public --add-port=3000/tcp --permanent
  • firewall-cmd --reload

nightmare 和 centos

Ubuntu

docker nuxt

# 移除所有容器
docker rm $(docker ps -a -q)
# 日记查看
docker logs -f -t --tail 行数 容器名
# 重启 docker
systemctl restart docker
# 进入容器shell
docker exec -it nginx /bin/bash
# 查看时区
date -R

docker 镜像源切换

sudo vim /etc/docker/daemon.json

输入

{
  "registry-mirrors": ["https://sji1i20h.mirror.aliyuncs.com"]
}

重启 docker

sudo systemctl daemon-reload
sudo systemctl restart docker

apt-get 镜像更换

RUN sed -i s@/deb.debian.org/@/mirrors.163.com/@g /etc/apt/sources.list
RUN apt-get clean
RUN apt-get update

其中 s@/deb.debian.org/@/mirrors.163.com/@g 表示将 deb.debian.org 全部替换为 mirrors.163.com 的意思

不写着行,直接系统 设置 sources.list 在 docker 内部不起作用,最会对当前系统执行有效

sources.list 内容为:

deb http://mirrors.163.com/debian/ jessie main non-free contrib
deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib

可以先考虑 备份原来的文件 mv /etc/apt/sources.list /etc/apt/sources.list.bak

Dockerfile

FROM node:12.14.0

MAINTAINER giscafer.com

#设置node环境变量为production
ENV NODE_ENV=production
 # 配合程序逻辑
ENV container=linux
ENV HOST 0.0.0.0
#创建/app 目录作为部署目录,创建容器实例时,挂载此目录
RUN mkdir -p /app

# docker - apt-get更换国内源解决Dockerfile构建速度过慢
RUN sed -i s@/deb.debian.org/@/mirrors.163.com/@g /etc/apt/sources.list
RUN apt-get clean

RUN apt-get update

# Installing the packages needed to run Nightmare
RUN apt-get install -y \
  xvfb \
  x11-xkb-utils \
  xfonts-100dpi \
  xfonts-75dpi \
  xfonts-scalable \
  xfonts-cyrillic \
  x11-apps \
  clang \
  libdbus-1-dev \
  libgtk2.0-dev \
  libnotify-dev \
  libgconf2-dev \
  libasound2-dev \
  libcap-dev \
  libcups2-dev \
  libxtst-dev \
  libxss1 \
  libnss3-dev \
  gcc-multilib \
  g++-multilib  \
  libgnome-keyring-dev


# 把项目复制到镜像里面
COPY . /app
# 指定命令执行的目录为 /app
WORKDIR /app
EXPOSE 3000

# 淘宝镜像
RUN npm config set registry https://registry.npm.taobao.org
# electron 淘宝镜像
RUN npm config set ELECTRON_MIRROR http://npm.taobao.org/mirrors/electron/
RUN npm install
RUN npm run build

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

提出环境部分单独发布镜像

https://hub.docker.com/repository/docker/giscafer/nightmare

项目部署的dockerfile

FROM giscafer/nightmare:latest

MAINTAINER giscafer.com

#设置node环境变量为production
ENV NODE_ENV=production
 # 配合程序逻辑
ENV container=linux
ENV HOST 0.0.0.0
#创建/app 目录作为部署目录,创建容器实例时,挂载此目录
RUN mkdir -p /app

# 把项目复制到镜像里面
COPY . /app
# 指定命令执行的目录为 /app
WORKDIR /app
EXPOSE 3000

# 淘宝镜像
RUN npm config set registry https://registry.npm.taobao.org
# electron 淘宝镜像
RUN npm config set electron_mirror http://npm.taobao.org/mirrors/electron/
RUN rm -rf node_modules
RUN npm install
RUN npm run build

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

遂心如意

文章 0 评论 0

5513090242

文章 0 评论 0

巷雨优美回忆

文章 0 评论 0

junpengz2000

文章 0 评论 0

13郎

文章 0 评论 0

qq_xU4RDg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文