代码之家  ›  专栏  ›  技术社区  ›  contactmatt

Docker正在构建引用不同文件夹中项目的.net核心应用程序

  •  0
  • contactmatt  · 技术社区  · 7 年前

    我正试图编写一个Dockerfile来构建我的.NET Core 2.2控制台应用程序 project-microservice-logger.csproj . 我得到一些构建错误,我认为这是因为我试图构建的Dockerfile位于保存 project-microservice-logger.csproj

    /company/project-common/project-common-database/project-common-database.csproj
    /company/project-microservices/project-microservice-logger/project-microservice-logger.csproj
    

    当我发出命令时,在 /company/project-microservices/project-microservice-logger

    命名空间中不存在类型或命名空间名称“Common”

    由于我可以很好地构建它,我知道它有一些东西是由于Dockers构建上下文造成的,并且它找不到文件。

    FROM microsoft/dotnet:2.2-sdk AS build-env
    WORKDIR /app
    
    # Copy csproj and restore as distinct layers
    COPY *.csproj ./
    RUN dotnet restore
    
    # Copy everything else and build
    COPY . ./
    RUN dotnet publish -c Release -o out
    
    # Build runtime image
    FROM microsoft/dotnet:2.2-runtime
    WORKDIR /app
    COPY --from=build-env /app/out .
    ENTRYPOINT ["dotnet", "logging.dll"]
    

    所有代码都在一个存储库中,但目前分为不同的解决方案(核心、微服务和web)


    .NET核心2.2
    Mac Docker/2.0.0.2版

    1 回复  |  直到 7 年前
        1
  •  0
  •   contactmatt    7 年前

    我把 publish shell脚本中的逻辑,docker映像使用由此构建的文件作为其代码基础。

    解决方案文件夹/build/this-build-script.sh
    解决方案文件夹/MyProject/MyProjectName.csproj

    BUILD_MODE="Release"
    DOCKER_IMAGE_TAG="latest"
    
    readonly BUILD_MODE
    readonly DOCKER_IMAGE_TAG
    
    publish_and_build_image()
    {
      PROJECT_DIR=$1
      PROJECT_FILE_NAME=$2
      DOCKER_IMAGE_NAME=$3
    
      echo "Publishing project $PROJECT_FILE_NAME ..."
      echo
      dotnet publish "..\\$PROJECT_DIR\\$PROJECT_FILE_NAME" --configuration $BUILD_MODE --verbosity quiet
    
      echo "Building docker image $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG ..."
      docker build --tag=$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG "../$PROJECT_DIR" --quiet
    
      #echo
      #echo -e "\033[32m $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG built \033[0m"
    }
    
    publish_and_build_image "MyProject" "MyProjectName.csproj" "my-docker-img-name"