使用docker-compose时无法从本地访问docker容器端口

时间:2020-06-10 22:02:54

标签: docker docker-compose

我有一个非常基本的node / express应用,带有dockerfile和docker-compose文件。当我使用

运行docker容器时
docker run -p 3000:3000 service:0.0.1 npm run dev

我可以转到localhost:3000并查看我的服务。但是,当我这样做时:

docker-compose run server npm run dev

在localhost:3000上看不到任何内容,以下是我的文件:

Dockerfile

WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000

docker-compose.yml

version: "3.7"
services:
    server:
        build: .
        ports:
            - "3000:3000"
        image: service:0.0.1
        environment:
            - LOGLEVEL=debug
        depends_on:
            - db
    db:
        container_name: "website_service__db"
        image: postgres
        environment:
            - POSTGRES_USER=user
            - POSTGRES_PASSWORD=pass
            - POSTGRES_DB=website_service

另外,从终端/泊坞窗侧来看一切正常-没有错误,服务运行正常,我只是无法访问节点端点

1 个答案:

答案 0 :(得分:0)

tl; dr

docker-compose run --service-ports server npm run dev
// the part that changed is the new '--service-ports' argument

问题是缺少docker-compose运行参数--service-ports

来自these docs

第二个区别是docker-compose运行命令 不创建服务配置中指定的任何端口 。这样可以防止端口与已经打开的端口发生冲突。 如果您确实希望创建服务的端口并将其映射到主机 ,请指定--service-ports标志: