![](/img/trans.png)
[英]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.