Docker 和网络核心应用程序不起作用 [英] Docker and net core application doesn't work
本文介绍了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屋!
查看全文