前后分离项目用docker打包成镜像在wsl的linux环境运行
·
1.后端创建Dockerfile

FROM openjdk:17-jdk-slim
WORKDIR /app
COPY meeting-backend-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]
2.前端创建Dockerfile

server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://host.docker.internal:8080;
}
}
3.下载docker desktop 的windows版本https://www.docker.com/products/docker-desktop/
- 安装 Docker Desktop,安装时勾选Use WSL2 instead of Hyper-V
- 打开 Docker→Settings→Resources→WSL Integration,勾选你的 Ubuntu,保存重启 Docker
4.修改docker国内加速源
- 右下角任务栏右键 Docker 图标 → Settings → Docker Engine
- 把现有 JSON 全量替换下面配置(JSON 格式严格,标点英文):
{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "registry-mirrors": [ "https://docker.xuanyuan.me", "https://docker.1ms.run", "https://docker.m.daocloud.io", "https://docker.mirrors.ustc.edu.cn", "https://mirror.ccs.tencentyun.com" ] }右下角 Apply & Restart,等待 Docker 自动重启 1 分钟。
5.验证生效
docker info
看到Registry Mirrors出现上面配置地址 = 配置成功,测试拉取轻量镜像:
docker pull nginx:alpine
6.前端docker打包
docker build -t meeting-web:1.0 .
docker run -d -p 80:80 --name web meeting-web:1.0
7.后端docker打包
docker build -t meeting-back:1.0 .
# 先关掉本地java -jar进程,再启容器后端
docker run -d -p 8080:8080 --name back meeting-back:1.0
8.查看已有镜像
docker images
9.导出镜像
# 导出两个镜像到D盘project-images.tar
docker save -o D:\project-images.tar meeting-web:1.0 meeting-back:1.0
10.wsl导入镜像运行项目
进入 WSL,导入 D 盘镜像包
docker load -i /mnt/d/project-images.tar
查看镜像
docker images
先启动后端容器
docker rm -f back web
docker run -d -p 8080:8080 --name back meeting-back:1.0
WSL 里输入创建命令
cat > linux_nginx.conf <<'EOF'
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://back:8080;
}
}
EOF
挂载配置启动前端
docker run -d -p 80:80 --name web -v $(pwd)/linux_nginx.conf:/etc/nginx/conf.d/default.conf meeting-web:1.0
Windows 浏览器打开:http://localhost 即可访问整套项目。
更多推荐
所有评论(0)