Py学习  »  Hans Kilian  »  全部回复
回复总数  5
3 年前
回复了 Hans Kilian 创建的主题 » Docker build-对所有运行命令使用相同的shell

不可能在同一个shell中运行单独的RUN语句。

如果您不喜欢串联命令的外观,可以编写一个shell脚本并运行它。

您必须使用COPY语句将其放入容器中。 或者你可以使用 wget curl 把它取出来,用管子装进壳里。这要求容器中存在wget或curl,因此您可能必须首先安装它们。

如果你使用 卷曲 Debian可能是这样的

RUN apt update && \
    apt install -y curl && \
    curl -sL https://github.com/link/to/my/install-script.sh | bash

如果你把它复制进来,它会是这样的

COPY install-script.sh .
RUN ./install-script.sh
3 年前
回复了 Hans Kilian 创建的主题 » dotnet restore在执行docker内置项目时出错。net 6使用层

你用的是 aspnet 不包含SDK的映像,因此无法使用它进行构建。你需要 sdk 下面是Dockerfile第一部分的图片

# .NET Core SDK
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build

# Sets the working directory
WORKDIR /app

# Copy Projects
#COPY *.sln .
COPY Src/DevFreela.API/DevFreela.API.csproj ./DevFreela.API/
COPY Src/DevFreela.Application/DevFreela.Application.csproj ./DevFreela.Application/
COPY Src/DevFreela.Core/DevFreela.Core.csproj ./DevFreela.Core/
COPY Src/DevFreela.Infrastructure/DevFreela.Infrastructure.csproj ./DevFreela.Infrastructure/

# .NET Core Restore
RUN dotnet restore ./DevFreela.API/DevFreela.API.csproj

# Copy All Files
COPY Src ./

# .NET Core Build and Publish
RUN dotnet publish ./DevFreela.Api/DevFreela.Api.csproj -c Release -o /publish

# ASP.NET Core Runtime
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY --from=build /publish ./

EXPOSE 80 5195 7066
ENV ASPNETCORE_URLS=http://+:5195;https://+:7066

ENTRYPOINT ["dotnet", "DevFreela.API.dll"]
3 年前
回复了 Hans Kilian 创建的主题 » Docker run bash节点:未找到命令

当您以交互方式运行bash时 .bashrc 文件将被运行。当您直接在 docker run 命令时,bash以非交互方式运行。bashrc没有运行。

NVM使用。bashrc需要进行设置,所以它需要运行。

您可以使用 -i 选项然后它会工作,但你会得到一些警告,因为它试图做一些终端失败的事情。

docker run --name electron-build -v ${PWD}:/project debian-wine-electron-builder:0.1 bash -i -c "npm install... ; command2 ..."

如果不使用nvm动态切换节点版本,则最好在不使用nvm的情况下安装所需的节点版本。

3 年前
回复了 Hans Kilian 创建的主题 » 可以让docker compose无限期运行的最小图像是什么?

你只需要一个docker compose文件就可以了

version: '3.9'
services:
  myservice:
    image: alpine:latest
    command: tail -f /dev/null

如果你喜欢别的东西,你可能会找到其他的图片来运行。 nginx:alpine 我突然想到。这不需要命令,所以可以在docker compose文件中保存一行。

3 年前
回复了 Hans Kilian 创建的主题 » aspnetcore docker容器上的开发人员证书

尝试添加这两行

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
# Add the line below ---------------------------------------------------
RUN dotnet dev-certs https
WORKDIR /src
COPY ["MyApp/MyApp.csproj", "MyApp/"]
COPY [...other libraries...]
RUN dotnet restore "MyApp/MyApp.csproj"
COPY . .
WORKDIR "/src/MyApp"
RUN dotnet build "MyApp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
# Add the line below ---------------------------------------------------
COPY --from=publish /root/.dotnet/corefx/cryptography/x509stores/my/* /root/.dotnet/corefx/cryptography/x509stores/my/
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]