【发布时间】:2019-05-20 14:05:44
【问题描述】:
我正在尝试使用 docker-compose 让 ASP.Net Core 在 docker 内运行。这是dockerfile的内容:
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["SchoolContact/SchoolContact.csproj", "SchoolContact/"]
RUN dotnet restore "SchoolContact/SchoolContact.csproj"
COPY . .
WORKDIR "/src/SchoolContact"
RUN dotnet build "SchoolContact.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "SchoolContact.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
ENV ASPNETCORE_URLS http://+:5000
EXPOSE 5000 80
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "SchoolContact.dll"]
这是docker-compose.yml的内容:
version: '3'
services:
api:
image: schoolcontact
build:
context: .
dockerfile: SchoolContact/Dockerfile
links:
- db:db
ports:
- '5000:5000'
restart: always
networks:
- school
db:
image: mysql:5.7
volumes:
- ./db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: Test
MYSQL_USER: admin
MYSQL_PASSWORD: 123456
networks:
- school
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- '8080:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: 123456
networks:
- school
reverse-proxy:
container_name: proxy
image: nginx
depends_on:
- api
ports:
- "9090:8080"
volumes:
- ./proxy.conf:/etc/nginx/conf.d/default.conf
networks:
- school
networks:
school:
volumes:
db:
driver: "local"
proxy.conf:
server {
listen 8080;
location / {
proxy_pass http://api:5000;
}
}
在这里发帖寻求帮助之前我尝试了太多次,我尝试在没有nginx的情况下运行,暴露端口与否,这么多方法。但我仍然无法访问该应用程序。我的最终目的是将应用程序托管在 docker 中,并且可以通过 URL http://localhost:5000 访问它。我不知道我哪里错了或错过了其他东西。我真的需要帮助。感谢阅读。
【问题讨论】:
标签: asp.net-core docker-compose dockerfile