前端项目配置 Dockerfile 打包后镜像部署无法访问

Dockerfile 配置如下:

FROM node:lts-alpine

WORKDIR /app
COPY . .
RUN npm install
RUN npm run build

EXPOSE 3001

CMD ["npm", "run", "preview"]

构建镜像

docker build -t vite-clarity-project .

启动镜像容器

docker run -p 3001:3001 --name=my-vite-clarity-project vite-clarity-project

启动后访问不到:

命令行访问:

root@btx:~# docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED        STATUS        PORTS                                       NAMES
1c02a1d7732f   vite-clarity-project   "docker-entrypoint.s…"   4 hours ago    Up 4 hours    0.0.0.0:3001->3001/tcp, :::3001->3001/tcp   my-vite-clarity-project 
root@btx:~# curl 0.0.0.0:3001
curl: (52) Empty reply from server  // 访问不到

浏览器访问:

该网页无法正常运作localhost
未发送任何数据。
ERR_EMPTY_RESPONSE前端项目配置 Dockerfile 打包后镜像部署无法访问_第1张图片

问题原因:

root@btx:~# docker logs 1c02a1d7732f

> [email protected] preview
> vite preview --port 3001

  ➜  Local:   http://localhost:3001/    // 问题原因只启动了 localhost
  ➜  Network: use --host to expose

知识点:

localhost:3001: 仅允许本地主机(即 Docker 容器内部)访问。
0.0.0.0:3001: 允许任何主机(包括容器外部的主机)通过该地址访问服务。

解决方法:

import path from "path"
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
    },
  },
  server: {
    host: '0.0.0.0', // ******** 加上这一行 '0.0.0.0' ******** //
  },
})

你可能感兴趣的:(前端,docker,vite,Dockerfile)