[英]How to install Microsoft.DotNet.Arcade.Sdk into the dotnet sdk folder?
[英]cannot install in a container dotnet sdk 6.0 and jdk 8
我需要安裝在同一個容器 dotnet sdk 6.0 和 jdk 8 中,我實現了以下 dockerfile 但創建了容器,並且在查看 java 時這似乎沒有安裝
##Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM ubuntu:20.04 AS build-jdk
RUN apt-get update && \
apt-get install -y openjdk-8-jre && \
apt-get install -y ant && \
apt-get clean;
# Fix certificate issues
RUN apt-get update && \
apt-get install ca-certificates-java && \
apt-get clean && \
update-ca-certificates -f;
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
COPY --from=build-jdk ./* ./
COPY . .
# Setup JAVA_HOME -- useful for docker commandline
ENV JAVA_HOME /app/usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME
WORKDIR /src
COPY ["DigitalSignature.csproj", "./"]
RUN dotnet restore "DigitalSignature.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "DigitalSignature.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "DigitalSignature.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DigitalSignature.dll"]
容器已創建,但在檢查是否安裝了 java 時,它沒有出現
命令
java -version
Java -version
printenv | env
您在 Dockerfile ( FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
) 的build
階段復制和配置 Java,但該階段僅用於構建您的 .NET 項目。 該階段未在文件映像中使用。 因此,任何未從該階段明確復制到最終階段的內容基本上都會被丟棄。
我建議將安裝/配置 Java 的命令移至 Dockerfile 的初始階段,即標記為base
的那個。 final
階段基於base
,因此它們中包含的任何內容都將在您的圖像中可用。
將它放在base
階段也將允許它在使用 Visual Studio 中的“快速調試”容器功能時可用。
我能夠用下一個 Dockerfile 解決問題
FROM ubuntu:18.04 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
# Install "software-properties-common" (for the "add-apt-repository")
RUN apt-get update && apt-get install -y \
software-properties-common
## Install Oracle's JDK
# add oracle jdk repository
RUN add-apt-repository ppa:ts.sch.gr/ppa && \
# accept oracle license
echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-
selections && \
echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-
selections && \
apt-get update && \
# install oracle jdk 8 and make it default
apt-get -y install oracle-java8-installer && \
apt-get -y install oracle-java8-set-default && \
# clean up
apt-get clean all && \
rm -rf /var/lib/apt/lists/*
Run wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
dpkg -i packages-microsoft-prod.deb && \
rm packages-microsoft-prod.deb
Run apt-get update; \
apt-get install -y apt-transport-https && \
apt-get update && \
apt-get install -y dotnet-sdk-6.0
Run apt-get update; \
apt-get install -y apt-transport-https && \
apt-get update && \
apt-get install -y aspnetcore-runtime-6.0
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["DigitalSignature.csproj", "./"]
RUN dotnet restore "DigitalSignature.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "DigitalSignature.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "DigitalSignature.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV ASPNETCORE_URLS=http://+:80
ENTRYPOINT ["dotnet", "DigitalSignature.dll"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.