簡體   English   中英

Docker構建引用不同文件夾中項目的.net核心應用程序

[英]Docker building a .net core application that references projects in different folder

我正在嘗試編寫一個構建.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構建上下文所致,並且找不到文件。

我的Docker文件沒什么特別的,本質上只是從一些在線可用的.NET Core Docker模板中獲取的。

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 Core 2.2
Docker for Mac /版本2.0.0.2

我將publish邏輯放在shell腳本中,而docker鏡像使用從中構建的文件作為其代碼庫。

該腳本采用以下文件夾結構:

解決方案 - 文件夾/建設/ 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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM