docker - 连接到 docker 容器内的 Nest.js 服务器
问题描述
我正在尝试为 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
,但没有帮助我。
解决方案
Nest 默认使用 3000 端口,所以我认为这就是问题所在。您可以尝试在 main.ts 中更改它:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3042);
}
或更改您的 docker 配置。Dockerfile
EXPOSE 3000/tcp
码头工人-compose.yml
version: "3.2"
services:
server:
container_name: server
hostname: localhost
build: ./
ports:
- 3000:3000
推荐阅读
- c++ - 未选择用于列表初始化的数组引用的构造函数
- javascript - React Router 是如何递归创建页面的?
- perl - 如何在签名中声明可选参数?
- c# - 测试返回 ActionResult 的 API 控制器
- javascript - React 网站有时不会在移动设备上全屏显示
- python - 带有 DatetimeIndex 的 DataFrame,如何每年制作一个情节?
- android - 如何加入多个 apk 并使用 Google App Bundle 构建通用 apk?
- sql - SQL 选择所有列以仅返回 MAX seqno
- c# - 这种泛型用法的确切含义(函数和泛型之间的点):“var mf: MeshFilter = GetComponent.
();"? - node.js - 如何在firestore / nodejs中存储/使用十进制和货币值