本地项目的准备工作请参考官方文档,不做解释,https://angular.cn/guide/universal 可以参考示例代码,
需要注意的时,配置文件的时候请检查好文件路径
这里主要介绍在使用Docker部署过程中的的问题记录,由于对express和Docker只是了解些皮毛,只是初步实现了目的.
这里项目名称统一为my-app
1.本地准备工作
1.主要的改动
新增的文件
app.server.module.ts
main.server.ts
webpack.server.config.js
server.ts
tsconfig.server.json
//如果用了hmr,compilerOptions里的types请保持和tsconfig.app.json一致
{
...
"compilerOptions": {
...
"types": ["node"]
...
},
...
}改动的文件
app.module.ts
angular.json
2.打包脚本
由于开发时ngcli安装在本地全局,但服务器环境时,全局不存在ng,所以需要使用npx来调用项目内部的库来实现打包
//package.json |
//build-dev.sh |
部署前,请在本地运行脚本并且启动确保没有错误
3.Docker配置
- Dockerfile文件配置
EXPOS端口时,请保持和 server.ts
的端口一致//Dockerfile-dev
FROM node:10
RUN sed -i -e "s/deb.debian.org/mirrors.163.com/g" /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y rsync
RUN npm config set registry https://registry.npm.taobao.org
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install
RUN ./build-dev.sh
EXPOSE 4000
ENTRYPOINT node dist/server.js
- 初始化部署文件
//docker-init-dev.sh |
- 更新部署文件
//docker-deploy-dev.sh |
2.服务器部署
1.克隆项目并且执行部署脚本
./docker-init-dev.sh |
部署后请查看镜像,容器,网络和服务是否都启动成功,执行对应命令即可docker image ls
docker container ls
docker network ls
docker service ls
2.配置Nginx反向代理
{ |
3.通过volume进一步加速静态资源
创建数据卷
docker volume create my-app |
查看数据卷docker volume inspect my-app
[
{
"CreatedAt": "xxxx",
"Driver": "local",
"Labels": null,
"Mountpoint": "/data/docker/volumes/my-app/_data",
"Name": "my-app",
"Options": null,
"Scope": "local"
}
]
配置Nginx,通过过滤筛选条件将带后缀名的文件从数据卷中读取
server_name xxxxxxx; |