Docker Desktop 部署新项目详细步骤
Docker Desktop 部署新项目详细步骤我将详细介绍使用 Docker Desktop 部署一个新项目的完整流程以 Node.js 应用为例。一、前期准备1.1 环境检查# 检查 Docker 版本docker--versiondocker-compose--version# 启动 Docker Desktop# 确保 Docker Desktop 处于运行状态1.2 项目结构准备my-app/ ├── src/ │ └── app.js ├── package.json ├── Dockerfile ├── docker-compose.yml ├── .dockerignore └── README.md二、创建 Docker 配置文件2.1 编写 Dockerfile# 使用官方 Node.js 镜像作为基础镜像 FROM node:18-alpine AS builder # 设置工作目录 WORKDIR /app # 复制 package.json 和 package-lock.json COPY package*.json ./ # 安装依赖 RUN npm ci --onlyproduction # 第二阶段创建生产镜像 FROM node:18-alpine WORKDIR /app # 从构建阶段复制 node_modules COPY --frombuilder /app/node_modules ./node_modules # 复制应用程序代码 COPY src ./src COPY package.json ./ # 设置非root用户安全最佳实践 RUN addgroup -g 1001 -S nodejs \ adduser -S nodejs -u 1001 USER nodejs # 暴露端口 EXPOSE 3000 # 定义环境变量 ENV NODE_ENVproduction # 启动命令 CMD [node, src/app.js]2.2 创建 .dockerignore 文件node_modules npm-debug.log Dockerfile* docker-compose* .env .git .gitignore README.md .vscode *.md2.3 创建 docker-compose.yml可选用于多容器部署version:3.8services:app:build:.ports:-3000:3000environment:-NODE_ENVproduction-DATABASE_URLpostgres://user:passworddb:5432/mydbdepends_on:-dbvolumes:-./logs:/app/logsrestart:unless-stoppednetworks:-app-networkdb:image:postgres:15-alpineenvironment:-POSTGRES_DBmydb-POSTGRES_USERuser-POSTGRES_PASSWORDpasswordvolumes:-postgres_data:/var/lib/postgresql/dataports:-5432:5432networks:-app-networkrestart:unless-stoppednginx:image:nginx:alpineports:-80:80volumes:-./nginx.conf:/etc/nginx/nginx.confdepends_on:-appnetworks:-app-networkvolumes:postgres_data:networks:app-network:driver:bridge三、构建和运行容器3.1 构建 Docker 镜像# 进入项目目录cdmy-app# 构建镜像-t 指定标签名dockerbuild-tmy-app:latest.# 查看构建的镜像dockerimages# 如果有构建缓存问题使用 --no-cachedockerbuild --no-cache-tmy-app:latest.3.2 运行容器# 简单运行dockerrun-d-p3000:3000--namemy-app-container my-app:latest# 带环境变量运行dockerrun-d\-p3000:3000\--namemy-app-container\-eNODE_ENVproduction\-eDATABASE_URLpostgres://user:passwordlocalhost:5432/mydb\my-app:latest# 挂载卷运行用于开发dockerrun-d\-p3000:3000\--namemy-app-dev\-v$(pwd)/src:/app/src\-v/app/node_modules\my-app:latest3.3 使用 Docker Compose推荐# 启动所有服务docker-composeup-d# 查看运行状态docker-composeps# 查看日志docker-composelogs-fapp# 停止服务docker-composedown# 停止并删除卷docker-composedown-v四、使用 Docker Desktop GUI 管理4.1 镜像管理打开 Docker Desktop点击左侧 Images 标签可以看到所有本地镜像点击 “Run” 按钮可以图形化配置容器4.2 容器管理点击 Containers 标签查看运行中的容器可以启动/停止/重启/删除容器点击容器名称进入详情页查看日志、进入终端、检查配置4.3 使用 Volumes 标签管理数据卷查看所有数据卷可以创建、删除数据卷检查数据卷使用情况五、开发工作流5.1 开发环境热重载配置# docker-compose.dev.ymlversion:3.8services:app:build:context:.target:builder# 使用Dockerfile的多阶段构建ports:-3000:3000environment:-NODE_ENVdevelopmentvolumes:-./src:/app/src-/app/node_modulescommand:npm run devstdin_open:truetty:true5.2 启动开发环境# 使用开发配置docker-compose-fdocker-compose.yml-fdocker-compose.dev.yml up-d# 进入容器进行调试docker-composeexecappsh六、调试和故障排除6.1 常用调试命令# 查看容器日志dockerlogs my-app-containerdockerlogs-fmy-app-container# 实时日志# 进入容器内部dockerexec-itmy-app-containersh# 检查容器状态dockerpsdockerps-a# 查看所有容器包括停止的# 查看容器资源使用dockerstats# 查看容器详细信息dockerinspect my-app-container6.2 常见问题解决端口被占用# 查看端口使用情况netstat-an|grep3000# 或使用 Docker Desktop 修改端口映射# 停止容器 - 修改 docker-compose.yml - 重新启动镜像构建缓存问题# 清除构建缓存dockerbuilder prune# 强制重新构建docker-composebuild --no-cache权限问题# 在 Dockerfile 中正确处理权限 RUN chown -R nodejs:nodejs /app USER nodejs七、生产部署最佳实践7.1 多阶段构建优化# 第一阶段构建 FROM node:18-alpine AS build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 第二阶段生产运行 FROM node:18-alpine WORKDIR /app COPY --frombuild /app/dist ./dist COPY --frombuild /app/node_modules ./node_modules COPY package.json . EXPOSE 3000 CMD [node, dist/main.js]7.2 使用 .env 文件管理环境变量# .env 文件NODE_ENVproductionDATABASE_URLpostgres://user:passworddb:5432/production_dbREDIS_URLredis://redis:6379# docker-compose.yml 中引用services:app:env_file:-.env7.3 健康检查配置# 在 Dockerfile 中添加 HEALTHCHECK --interval30s --timeout3s --start-period5s --retries3 \ CMD curl -f http://localhost:3000/health || exit 1# 或在 docker-compose.yml 中添加services:app:healthcheck:test:[CMD,curl,-f,http://localhost:3000/health]interval:30stimeout:10sretries:3start_period:40s八、清理和维护# 停止并删除所有容器docker-composedown# 删除未使用的镜像dockerimage prune# 删除未使用的卷dockervolume prune# 删除所有未使用的 Docker 对象dockersystem prune-a总结使用 Docker Desktop 部署新项目的关键步骤环境准备安装 Docker Desktop验证安装项目配置创建 Dockerfile、.dockerignore、docker-compose.yml镜像构建使用docker build构建应用镜像容器运行使用docker run或docker-compose up启动GUI 管理通过 Docker Desktop 可视化界面管理开发调试配置热重载使用日志和终端调试生产优化实施多阶段构建、健康检查等最佳实践Docker Desktop 提供了完整的一体化体验使得容器化应用的开发、部署和管理变得更加简单高效。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2522265.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!