NOP*_*MOV 2 nginx docker .net-core asp.net-core asp.net-core-webapi
我目前正在为ASP.NET Core WebAPI项目运行docker容器。该Web服务当前在端口80上公开。
我的dockerfile看起来像这样:
FROM microsoft/dotnet:2.1-aspnetcore-runtime
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "testapi.dll"]
Run Code Online (Sandbox Code Playgroud)
我想将Nginx安装为服务和公开的公共网络之间的一层。
最终结果应该是在仅内部端口90上运行的ASP.NET,以及将本地90转发到公共80端口的Nginx Web服务器。
这可能吗?如果是这样,我如何实现这种架构?顺便说一句,我完全知道由额外的层引起的开销。
谢谢!
Docker实现此目的的方法是为两个服务提供两个容器。Docker-compose是帮助管理多容器应用程序的工具。
以下docker-compose.yml应该适合您:
version: '3'
services:
app:
build:
context: ./dotnet
dockerfile: Dockerfile
expose:
- "80"
proxy:
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- "80:80"
links:
- app
Run Code Online (Sandbox Code Playgroud)
基本上,我们公开应用程序的端口,以便Nginx容器可以访问它,然后将Nginx容器上的端口绑定到主机上的端口。
您将Dockerfile和应用程序放置在“ dotnet”文件夹中,并将您的NginX逻辑放置在/ nginx / Dockerfile文件中。
编辑:如果您真的想将两个服务都放在一个容器中,则可以使用以下命令:
FROM microsoft/dotnet:2.1-aspnetcore-runtime
ENV ASPNETCORE_URLS https://*:8080
RUN apt update && \
apt install nginx
ADD nginx-website.conf /etc/nginx/sites-enabled
RUN service nginx restart
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "testapi.dll"]
Run Code Online (Sandbox Code Playgroud)
此时,您只需要创建Nginx配置文件“ nginx-website.conf”并为端口80至8080设置反向代理。
| 归档时间: |
|
| 查看次数: |
2368 次 |
| 最近记录: |