Docker 和网络核心应用程序不起作用 [英] Docker and net core application doesn't work

查看:34
本文介绍了Docker 和网络核心应用程序不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 Docker 设置 dotnet 应用程序.

I trying setting up dotnet application with Docker.

后端"文件夹中的Dockerfile:

FROM microsoft/dotnet:1.1-sdk AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out

FROM microsoft/dotnet:1.1-runtime 
WORKDIR /app
COPY --from=build-env /app/out ./
CMD ["dotnet", "backend.dll"]

前端"文件夹中的Dockerfile:

# build
FROM node AS build-env
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install

COPY . /usr/src/app/
RUN npm run build

# run
FROM nginx

COPY --from=build-env /usr/src/app/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf

nginx.conf

events {}

http {
  server {
    listen 80;

    location / {
      root /usr/share/nginx/html;
      include /etc/nginx/mime.types;
    }

    location /api {
      rewrite ^/api/?(.*) /$1 break;
      proxy_pass http://api:5000;
    }
  }
}

docker-compose.yml

version: "3"

services:
  # redis:
  #   image: redis
  #   container_name: demoapp-redis
  # db:
  #   image: postgres
  #   container_name: demoapp-database
  api:
    build:
      context: ./backend
    container_name: demoapp-backend
    ports:
      - 5000:5000
    # depends_on:
    #   - db
  web:
    build:
      context: ./frontend
    container_name: demoapp-frontend
    ports:
      - 80:80
    depends_on:
      - api

当我使用 dotnet run 启动我的应用程序时,一切正常

When I start my application with dotnet run all is ok

MacBook-Pro-Pavel:~ pavel$ curl http://localhost:5000/values
["value1","value2"]

但是当我运行 docker-compose up 时,我收到此消息:

But when I run docker-compose up I get this message:

demoapp-backend | warn: Microsoft.AspNetCore.Server.Kestrel[0]
demoapp-backend |       Unable to bind to http://localhost:5000 on the IPv6 loopback interface: (Error -99 EADDRNOTAVAIL address not available)
demoapp-backend | Hosting environment: Production
demoapp-backend | Content root path: /app
demoapp-backend | Now listening on: http://localhost:5000
demoapp-backend | Application started. Press Ctrl+C to shut down.

当我尝试提出请求时:

MacBook-Pro-Pavel:~ pavel$ curl http://localhost:5000/values
curl: (52) Empty reply from server
MacBook-Pro-Pavel:~ pavel$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
2ae78ca79f56        demo_web            "nginx -g 'daemon ..."   39 minutes ago      Up About a minute   0.0.0.0:80->80/tcp       demoapp-frontend
9220206e46fe        demo_api            "dotnet backend.dll"     7 hours ago         Up About a minute   0.0.0.0:5000->5000/tcp   demoapp-backend

推荐答案

我将 .UseUrls("http://0.0.0.0:5000") 添加到我的 Program.cs,感谢 Andy Shinn

I add .UseUrls("http://0.0.0.0:5000") to my Program.cs, thanks Andy Shinn

这篇关于Docker 和网络核心应用程序不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆