多阶段dockerfile和ARG / ENV变量

时间:2019-05-23 03:24:50

标签: docker .net-core docker-multi-stage-build

我有一个看起来像这样的dockerfile:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-alpine AS base

ENV ASPNETCORE_URLS=http://+:50777
EXPOSE 50777

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine AS build-env

COPY . /app
RUN dotnet restore

WORKDIR /app

ARG ASPNETCORE_ENVIRONMENT="Production"
ARG DATABASE_CONN_STRING="Server=tcp:mssqldb,1433; Database=test; User=sa; Password=test123;"
ARG ALLOWED_CORS=http://localhost:3000
ARG DOTNET_RUNNING_IN_CONTAINER=true

WORKDIR /app/backend
RUN dotnet publish -c Release -o /app/out

FROM base as final

WORKDIR /app
COPY --from=build-env /app/out ./out

WORKDIR /app/out

ENTRYPOINT ["dotnet", "test.project.dll"]

该项目使用数据库容器和后端容器,暴露端口50777与API进行交互。

鉴于上面的dockerfile,构建成功完成,并且应用程序正在容器中运行,但是我无法访问后端API。

现在,我了解到运行容器时会使用ENV,而在构建过程中会使用ARG,那么为什么我无法连接到它呢?

[编辑]

Docker运行命令:

docker run -d --name api -p 50777:50777 -it test-image tail -f /dev/null

0 个答案:

没有答案