无法访问此站点 docker-compose

IT技术 reactjs docker docker-compose webpack-dev-server
2021-05-15 06:26:35

我正在尝试将docker -compose 用于react-typescript应用程序,webpack-dev-server下面是我的Dockerfile

FROM node:lts-slim

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

EXPOSE 3000

CMD [ "npm", "start" ]

"start": "webpack-dev-server --port 3000"package.json条线

docker-compose.yml

version: "3"
services:
    frontend:
        container_name: awesome_web
        build:
            context: ./client
            dockerfile: Dockerfile
        image: webpack
        ports:
            - "3000:3000"
        volumes:
            - ./client:/usr/src/app

根据成功编译的日志应用程序执行了命令docker-compose up --build

docker ps 的输出

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c88198ba996c        webpack             "docker-entrypoint.s…"   21 seconds ago      Up 20 seconds       0.0.0.0:3000->3000/tcp   awesome_web

但是当我尝试访问localhost:3000时出现错误无法访问此站点

我是 docker 新手,关注在线博客,但我不明白为什么我无法访问站点?

2个回答

尝试将您的start脚本更改为:

webpack-dev-server --host 0.0.0.0 --port 3000

你的 Dockerfile 到:

FROM node:lts-slim

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app
COPY . /usr/src/app/

EXPOSE 3000

CMD [ "npm", "start" ]

注意:我强烈建议不要以 root 身份运行容器。您应该始终使用命令降级您的用户USER ...

安全

根据此 Snyk 的报告,除了以 root 身份运行之外,您还使用了易受攻击的基础映像。我强烈建议您改用此图像此外,您应该以非 root 用户身份运行您的图像

FROM node:13.8.0-alpine

# don't run as root
RUN addgroup -S app_group && adduser -S -G app_group app_user

RUN mkdir -p /usr/src/app && chown app_user /usr/src/app

WORKDIR /usr/src/app
COPY --chown=app_user:app_group . /usr/src/app/

EXPOSE 3000

USER node
CMD [ "npm", "start" ]
USER app_user

如果您使用的是 docker 工具包,那么每个容器都在运行虚拟机,检查您当前的容器在哪个虚拟机上运行,​​获取 vm ip 并使用此 url vm-ip:3000 浏览或者如果您只是运行 docker,则尝试打开 docker 0.0.0.0:3000 。