如何访问作为Docker容器运行的节点api

时间:2019-10-22 12:16:28

标签: docker

我已经为已被docker化的node js应用程序构建了一个docker-compose文件,但是我不知道如何对作为docker容器运行的node js应用程序进行API调用,请帮助我这种担心。

我的DockerFile:

FROM node:10.15-slim

ENV NODE_ENV=production

WORKDIR /app

COPY package.json package-lock*.json ./

RUN npm install && npm cache clean --force

COPY . .

CMD ["node", "./bin/www"]

我的Docker组成文件:

version: '2.4'

services:
  express:
    build: 
      context: .
      dockerfile: Dockerfile
    command: /app/node_modules/.bin/nodemon ./bin/www
    ports:
      - 3000:3000
    volumes:
      - .:/app
    environment:
      - DEBUG=sample-express:*
      - NODE_ENV=development

1 个答案:

答案 0 :(得分:0)

您需要从运行您的应用程序的Docker公开端口。 假设您的应用程序在docker内部的端口8080上运行,这是公开该特定端口的方法:

  

博览会8080

然后,您需要将docker公开的端口映射到您的本地端口。您可以在docker中执行以下操作:

  

docker run -p 49160:8080 -d docker_image

如果您正在使用docker-compose,您将像这样进行操作:

version: '3'

services:
  nodejs:
    build:
      context: .
      dockerfile: Dockerfile
    image: nodejs
    container_name: nodejs
    ports:
      - "8080:8080"

更新

假设您要将/api请求发送到后端服务器。这就是您在nginx conf中要做的事情:

server {
  listen 80

  location /api {
      proxy_pass http://backend:8080/;
   }
} 

希望对您有帮助。