我有一个非常基本的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
另外,从终端/泊坞窗侧来看一切正常-没有错误,服务运行正常,我只是无法访问节点端点
答案 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标志: