我正在尝试为Nest.js服务器创建一个容器。目前,我只有创建Nest项目时自动创建的服务器的基本版本。我在Dockerfile和docker-compose中尝试了一些操作,但是当我启动容器并转到浏览器进入localhost:3042
时,它说页面无法正常工作,但应该获取一个对象。
所以现在,我的Dockerfile看起来像这样:
FROM node:10
WORKDIR /microservices
COPY package*.json ./
COPY tsconfig.json tsconfig.json
COPY src src
RUN ["npm","install","global","@nestjs/cli"]
RUN ["npm", "install"]
EXPOSE 3042
ENTRYPOINT ["npm","run","start"]
我的docker-compose.yaml看起来像这样:
version: "3.2"
services:
server:
container_name: server
hostname: localhost
build: ./
ports:
- "3042:3042"
我运行docker-compose up
,转到浏览器,它不起作用。
docker-compose up
命令的输出为:
server | [Nest] 18 - 07/12/2019, 1:44 PM [NestFactory] Starting Nest application...
server | [Nest] 18 - 07/12/2019, 1:44 PM [InstanceLoader] AppModule dependencies initialized +26ms
server | [Nest] 18 - 07/12/2019, 1:44 PM [RoutesResolver] AppController {/}: +10ms
server | [Nest] 18 - 07/12/2019, 1:44 PM [RouterExplorer] Mapped {/, GET} route +7ms
server | [Nest] 18 - 07/12/2019, 1:44 PM [NestApplication] Nest application successfully started +5ms
所以似乎内部发生了什么事,应用程序成功启动了。
我查看了一些示例,一个来自他们的文档中使用python的示例,另一个是Express.js
的示例,但没有帮助我。
答案 0 :(得分:0)
默认情况下,嵌套使用端口3000,所以我认为这是问题所在。您可以尝试在main.ts中对其进行更改:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3042);
}
或更改您的docker配置。 Dockerfile
EXPOSE 3000/tcp
docker-compose.yml
version: "3.2"
services:
server:
container_name: server
hostname: localhost
build: ./
ports:
- 3000:3042
答案 1 :(得分:0)
如果有人遇到同样的问题,我的问题是我在 app.listen 中添加了第二个参数
改成这样:
DSPND_DT
到这里
await app.listen(this.port, this.host);
解决了我的问题