学习web架构师知识点
1, npm whoami 是否登录
2, npm login 登录
3,npm config ls 查看镜像配置,上传时,不要指向淘宝镜像源
4,npm files 配置上传文件夹
5, npm install modules --save --loglevel verbose 安装依赖显示详细信息
6, vue add unit-jest 安装测试依赖
7,prePublishOnly: 'npm run lint && npm run test && npm run build' 执行发布之前,自动完成打包工作
8,rimraf './dist' 依赖包,删除文件夹的包
9,husky 工具 commit 提交之前检查代码质量
10,CI 持续集成 CD持续交付,持续部署
github action travis-ci
11,cat ~/.npmrc 获取npm token
language: node_js
node_js:
- stable
cache:
directories:- node_modules
deploy:
provider: npm
skip_cleanup: true
email: ''
api_key:
secure:
on:
tags: true
- node_modules
加密密钥
gem install travis
travis encrypt --pro 3w34 --add deploy.api_key, 在.travis.yml 同级目录上运行
git tag -a v1.1.1 -m '1.1.1' ,打标签
git push --tags // 推送标签
cookie session
JWT json web token
SSO oAuth2 单点登录,第三方鉴权
koa2 单元测试
jest mocha
聊聊架构
pm2
pm2 start xxx.js
pm2 restart <id/name>
pm2 reload
pm2 list
pm2 logs <id/name>
pm2 stop <id/name>
pm2 delete <id/name>
pm2 monit
nginx
nginx -s reload
nginx -s stop
nginx -t 测试
nginx -c xxx.conf,指定文件系统
use root;
worker_process auto;多进程
docker 虚拟机技术, 容器,启动快,占用资源少,体积小
docker-compose
vmware virturalbox
docker pull <image-name>:<tag>,下载镜像
docker images 查看镜像
docker rmi <image-id> 删除
docker push <username>/<repository>:<tag>
docker image prune 删除
docker ps 查看所有的容器 docker ps -a -a 隐藏文件
docker stop <container-id>
docker rm <con-id> -f 强制删除
docker logs <container-id> e 查看容器日志
docker exec -it <container-id> /bin/sh 进入容器控制台
docker inspect id 查看容器信息
docker stop (docker ps -aq) 删除所有容器
docker rmi $(docker images -q) 删除所有镜像
docker run -p 81:80 -v hostPath:containerPath -d --name nginx1 nginx
-p 端口映射
-v 数据卷,文件映射
-d 后台运行
--name 定义容器名称
echo hello docker hello world > index.html 覆盖信息
Dockerfile
FROM node:14 14 版本Tag
docker pull node:14
WORKDIR /app // 容器目录app工作目录
COPY . /app // copy所以文件到app目录下
// 构建镜像, 一般做一些系统配置,安装必备的软件,可有多个
RUN XXX
RUN npm install pm2 -g
...
启动容器,只能有一个CMD
CMD echo k2 xxx npx pm2 log
要有阻塞控制台输入的程序 pnx pm2 log
可以打印出环境变量
//环境变量
ENV k1=v1
ENV k2=v2
docker 构建
docker build -t <name> . # . 指用Dockerfile文件构建
docker images
.dockerignore 忽略文件
容器里安装pm2 全局或者本地安装
docker-compose.yml文件
配置redis 配置mysql 配置mongodb
构建容器docker-compose build <service-name>
启动所有服务器docker-compose up -d,后台启动
停止所有服务docker-compose down
查看服务docker-compose ps
version: '3'
services:
editor-server: # service name
build:
context: . # 当前目录
dockerfile: Dockerfile # 基于 Dockerfile 构建
image: editor-server # 依赖于当前 Dockerfile 创建出来的镜像
container_name: editor-server
ports:
- 8081:3000 # 宿主机通过 8081 访问
editor-redis: # service name,重要!
image: redis # 引用官网 redis 镜像
container_name: editor-redis
ports:
# 宿主机,可以用 127.0.0.1:6378 即可连接容器中的数据库 redis-cli -h 127.0.0.1 -p 6378
# 但是,其他 docker 容器不能,因为此时 127.0.0.1 是 docker 容器本身,而不是宿主机
- 6378:6379
environment:
- TZ=Asia/Shanghai # 设置时区
链接mysql
version: '3'
services:
editor-server: # service name
build:
context: . # 当前目录
dockerfile: Dockerfile # 基于 Dockerfile 构建
image: editor-server # 依赖于当前 Dockerfile 创建出来的镜像
container_name: editor-server
ports:
- 8081:3000 # 宿主机通过 8081 访问
editor-redis: # service name,重要!
image: redis # 引用官网 redis 镜像
container_name: editor-redis
ports:
# 宿主机,可以用 127.0.0.1:6378 即可连接容器中的数据库 redis-cli -h 127.0.0.1 -p 6378
# 但是,其他 docker 容器不能,因为此时 127.0.0.1 是 docker 容器本身,而不是宿主机
- 6378:6379
environment:
- TZ=Asia/Shanghai # 设置时区
editor-mysql:
image: mysql # 引用官网 mysql 镜像
container_name: editor-mysql
restart: always # 出错则重启
privileged: true # 高权限,执行下面的 mysql/init
command: --default-authentication-plugin=mysql_native_password # 远程访问
ports:
- 3305:3306 # 宿主机可以用 127.0.0.1:3305 即可连接容器中的数据库,和 redis 一样
volumes:
- .docker-volumes/mysql/log:/var/log/mysql # 记录日志
- .docker-volumes/mysql/data:/var/lib/mysql # 数据持久化
- ./mysql/init:/docker-entrypoint-initdb.d/ # 初始化 sql
environment:
- MYSQL_DATABASE=imooc_lego_course # 初始化容器时创建数据库
- MYSQL_ROOT_PASSWORD=Mysql_2019
- TZ=Asia/Shanghai # 设置时区
editor-mongo:
image: mongo # 引用官网 mongo 镜像
container_name: editor-mongo
restart: always
volumes:
- '.docker-volumes/mongo/data:/data/db' # 数据持久化
environment:
- MONGO_INITDB_DATABASE=imooc_lego_course
- TZ=Asia/Shanghai # 设置时区
ports:
- '27016:27017' # 宿主机可以用 127.0.0.1:27016 即可连接容器中的数据库
配置测试机
配置work
adduser work
passwd work
whereis sudoers # 找到文件位置 /etc/sudoers
chmod u+w /etc/sudoers # 修改权限, u 表示所有者, w 表示写权限 + 表示添加
vim /etc/sudoers # 编辑该文件
找到 root ALL=(ALL) ALL
再加一行 work ALL=(ALL) ALL
chmod u-w /etc/sudoers
https://homework.imooc-lego.com/pages/GreedyCat/15-week15-%E7%AC%94%E8%AE%B0.html
删除<none>:<none>
docker 如何删除none镜像
删除none的镜像,要先删除镜像中的容器。要删除镜像中的容器,必须先停止容器!
停止容器
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
1
删除容器
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
1
删除镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')
接口设计
GraphQL Graph Query Language 图标查询语言, ,擅长处理图的数据结构的查询,多个数据对象,各个之间还有关联关系
进入容器内部
docker exec -it mysql bash