






















https://chat.deepseek.com/share/26rlloqp40befs1ey5
本文档记录了在 Windows 11 + WSL2 + Docker Desktop 环境中,从零开始构建公司内部项目(imes-server 后端、imes-ui 前端)Docker 镜像的全过程。适用于本地开发环境。
在 PowerShell(管理员) 中执行:
# 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 重启电脑后,设置 WSL2 为默认版本
wsl --set-default-version 2
# 安装 Ubuntu 22.04
wsl --install -d Ubuntu
Enable integration with my default WSL distroUbuntu)Apply & Restart# 进入 Ubuntu 终端
wsl -d Ubuntu
# 测试 Docker 命令
docker --version
docker ps
⚠️ 重要:不要在
docker-desktop这个特殊的 WSL 发行版中存放代码或运行docker命令,它仅用于 Docker 引擎后台,空间极小(约 136MB)。请始终在常规 Ubuntu 发行版中进行开发。
在 Ubuntu 中执行:
cd ~
mkdir imes
cd imes
git clone -b develop http://devops.inspur.com/ITE__mes/imes-server.git
git clone -b develop http://devops.inspur.com/ITE__mes/imes-ui.git
imes-servercd ~/imes/imes-server
ls -la # 确认有 Dockerfile、pom.xml 及各个模块目录
ARG build_from=devops.inspur.com:80/ite/mes/repo/local_repo/imes-docker/base/maven-openjdk:17-jdk-alpine
ARG run_from=devops.inspur.com:80/ite/mes/repo/local_repo/imes-docker/base/amazoncorretto:22
FROM ${build_from} AS build
WORKDIR /build
COPY . .
RUN mvn -B -X clean package -Dmaven.test.skip=true -Dautoconfig.skip
FROM ${run_from}
COPY --from=build /build/ktg-admin/target/ktg-admin.jar /ktg-admin.jar
ENTRYPOINT ["java", "-jar", "/ktg-admin.jar"]
docker build -t imes-server:latest .
构建过程说明:
maven-openjdk:17-jdk-alpine)作为编译环境ktg-admin/target/ktg-admin.jaramazoncorretto:22 作为运行基础镜像耗时:约 5-6 分钟(取决于机器性能)
docker images | grep imes-server
输出示例:
imes-server latest 79911b7a47ed 1.34GB 655MB
imes-uicd ~/imes/imes-ui
ls -la # 确认有 Dockerfile、nginx.conf.template、package.json 等
ARG build_from=devops.inspur.com:80/ite/mes/repo/local_repo/imes-docker/base/node:14-alpine
ARG run_from=devops.inspur.com:80/ite/mes/repo/local_repo/imes-docker/base/nginx:alpine
FROM ${build_from} AS build
WORKDIR /app
COPY . .
RUN npm config set phantomjs_cdnurl https://npmmirror.com/mirrors/phantomjs && \
npm config set registry https://registry.npmmirror.com && \
npm install && npm run build:prod
FROM ${run_from}
COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf.template /etc/nginx/nginx.conf.template
WORKDIR /etc/nginx/
EXPOSE 80
ENTRYPOINT envsubst '$BACKEND_SERVICE' < nginx.conf.template > ./conf.d/default.conf && cat ./conf.d/default.conf && nginx -g 'daemon off;'
docker build -t imes-ui:latest .
构建过程说明:
node:14-alpine 作为编译镜像npm install 和 npm run build:prod 生成静态文件到 dist 目录nginx:alpine 作为运行镜像dist 复制到 /usr/share/nginx/htmlnginx.conf.template 并配置入口点耗时:约 6-7 分钟
docker images | grep imes-ui
输出示例:
imes-ui latest 80e47be87854 229MB 90MB
wsl --list -v # 查看发行版及版本
wsl -d Ubuntu # 进入 Ubuntu
wsl --shutdown # 重启所有 WSL 实例(解决网络问题)
docker images # 列出本地镜像
docker save -o <file.tar> 镜像名 # 导出镜像
docker load -i <file.tar> # 导入镜像
docker tag <old> <new> # 打标签
docker rmi 镜像名 # 删除镜像
docker system prune -a -f # 清理未使用的镜像/容器/缓存(谨慎使用)
| 镜像名称 | 标签 | 磁盘使用量 | 内容大小 |
|---|---|---|---|
imes-server |
latest | 1.34 GB | 655 MB |
imes-ui |
latest | 229 MB | 90 MB |
devops.inspur.com:80/.../amazoncorretto |
22 | 982 MB | 484 MB |
devops.inspur.com:80/.../maven-openjdk |
17-jdk-alpine | 684 MB | 340 MB |
devops.inspur.com:80/.../nginx |
alpine | 111 MB | 53.8 MB |
devops.inspur.com:80/.../node |
14-alpine | 261 MB | 124 MB |
devops.inspur.com:80/.../node |
22-slim | 479 MB | 233 MB |
注:基础镜像中的
node:22-slim本地可能有两份不同 ID,来源不同但功能相同。
docker-desktop 存放代码或运行命令。.dockerignore 文件,排除 .git、node_modules、target 等,减小构建上下文。docker images 查看,使用 docker save 备份或分发镜像。ARG 指定,确保本地存在或可访问。本总结涵盖从环境搭建到镜像构建的全流程,可作为内部开发文档直接使用。如有其他问题,请根据具体错误日志进一步排查。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。