# backend-koa **Repository Path**: hduwangbing/backend-koa ## Basic Information - **Project Name**: backend-koa - **Description**: koa提供服务,docker部署一个node服务到服务器实战项目 - **Primary Language**: Unknown - **License**: ISC - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-01-01 - **Last Updated**: 2023-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # docker 学习总结 ## 配置 docker 加速器(解决 docker pull 速度慢的问题) 参考 https://www.jianshu.com/p/81bf5efff8e0 其中 Registry mirrors 可以设置为 https://9cpn8tt6.mirror.aliyuncs.com ## docker 优点 1. 更高效的资源利用 2. 更快速的交付部署 3. 更易迁移扩展 4. 更简单的更新管理 ## docker 中镜像与容器的区别 可以简单理解为镜像是安装系统的光盘,容器是通过光盘安装出来的系统 也可以理解为镜像是父类,容器是子类 ## docker 部署优化 1. RUN/COPY 分层(Dockerfile 中的每条指令都会创建一个镜像层,Dockerfile 指令或复制的项目文件在没有修改变动的情况下,每个镜像层是可以被复用和缓存的) 2. 使用 Alpine 优化,Alpine 是一个很小的 Linux 发行版,想要大幅度减小镜像体积选择 Node.js 的 Alpine 版本也是最简单的,另外 -alpine 的时区默认不是国内的,需要 Dockerfile 配置时区 3. 生产环境不要打包 devDependencies 包 4. 可以参考 https://juejin.im/post/5d8d61b8f265da5b76372850#heading-6 ## 常用指令 docker pull 镜像名 docker images docker container ls docker ps -a docker rm/start/stop 容器名或容器 id docker rmi 镜像名或镜像 id docker build -t 构建的镜像名称 . docker run --name 容器名 -p 宿主机器端口:容器映射出来的端口 -d 镜像名 docker exec -it 容器名 bash 进入容器的 bash ## 部署 nodejs 服务 1. 编写 Dockerfile 文件 打包成镜像 2. 使用打包的镜像生成容器 3. 运行容器 4. 可使用 curl 命令测试 5. 如果要连另外一个容器的服务,就需要用宿主机器的 ip(比如 nodejs 服务需要连接 mongodb,那么需要将连接的 ip 换成宿主机器的 IP,不能用 localhost) ### 例子 ```shell 第一次运行 cd /Users/hdu/Desktop/advanced-front-end && rm -rf dockerdemo && git clone https://gitee.com/hduwangbing/dockerdemo.git && cd dockerdemo && docker build -t dockerdemo . && docker run --name dockerdemocontainer -p 8000:8899 -d dockerdemo 非第一次运行 cd /Users/hdu/Desktop/advanced-front-end && rm -rf dockerdemo && git clone https://gitee.com/hduwangbing/dockerdemo.git && cd dockerdemo && docker build -t dockerdemo . && docker stop dockerdemocontainer && docker rm dockerdemocontainer && docker run --name dockerdemocontainer -p 8000:8899 -d dockerdemo ``` ## 注意事项 1. 在构建自己的 nodejs 服务的时候,package.lock.json 文件要存在以及 package.json 文件里的字段需要完整,否则打包成镜像会出现失败或者警告,导致出现问题 2. 如果 nodejs 项目出现修改,需要重新打包成镜像(这个时候就要注意如果重名会报错,一般就是将之前的同名容器停止后删除和删除之前的镜像) ## 构建 mongodb 可以参考 https://hub.docker.com/ https://juejin.im/post/5dff84e051882512290f2fc2?utm_source=gold_browser_extension#heading-7