Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (seongtaejeong at gmail.com)
홈페이지
첨부 파일
 

Docker container 내에서 빌드 시 error MSB3021: Unable to copy file "..." to "...". Access to the path '...' is denied.

docker container에 윈도우 파일 시스템의 디렉터리를 볼륨으로 연결한 다음,

c:\temp> docker run -v C:\temp\TestApp\:/app --name test-instance --rm -it net_build /bin/bash -c "cd /app/TestApp && dotnet build" 

그곳에서 빌드를 했더니 권한 오류가 발생합니다. 혹시나 해서 "docker run -it ..."로 실행해 직접 그 인스턴스에 들어가 빌드를 해도 역시나 오류가 발생합니다.

# whoami
root

# dotnet build
  Determining projects to restore...
  Restored /app/TestApp/TestApp.csproj (in 705 ms).
/usr/share/dotnet/sdk/8.0.404/Microsoft.Common.CurrentVersion.targets(5034,5): error MSB3021: Unable to copy file "/app/Libs/net6.0/Debug/Microsoft.Diagnostics.Runtime.dll" to "bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll". Access to the path '/app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll' is denied. [/app/TestApp/TestApp.csproj]

Build FAILED.

/usr/share/dotnet/sdk/8.0.404/Microsoft.Common.CurrentVersion.targets(5034,5): error MSB3021: Unable to copy file "/app/Libs/net6.0/Debug/Microsoft.Diagnostics.Runtime.dll" to "bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll". Access to the path '/app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll' is denied. [/app/TestApp/TestApp.csproj]
    0 Warning(s)
    1 Error(s)

그러니까, 다음의 파일 복사가 안 된다는 것인데요,

"/app/Libs/net6.0/Debug/Microsoft.Diagnostics.Runtime.dll" ==> "bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll"

복사 대상이 되는 파일의 경로가 상대 경로로 나오지만, 그다음 메시지에 나온 것처럼 절대 경로는 '/app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll'이 됩니다.

'/app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll'
             "bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll"

그런데, 그냥 저 파일을 삭제하면 아무런 문제 없이 잘됩니다.

# rm '/app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll'
# rm '/app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll'
rm: cannot remove '/app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll': No such file or directory

가만 보니, 권한 오류는 발생하지만 대상 파일이 생성은 되면서 그 크기가 0이라는 점이 재미있습니다.

# dotnet clean

# dotnet build

# ls /app/Libs/net6.0/Debug/Microsoft.Diagnostics.Runtime.dll -l
-r-xr-xr-x 1 root root 861696 Dec 11 02:56 /app/Libs/net6.0/Debug/Microsoft.Diagnostics.Runtime.dll

# ls /app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll -l
-r-xr-xr-x 1 root root 0 Dec 12 02:24 /app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll

그러니까, 파일 생성까지는 했는데 쓰는 동안 어떤 식으로든 문제가 생겼다는 것인데요, 더욱 재미있는 건 그냥 cp 명령어를 내리면 또 잘됩니다. ^^;

# cp /app/Libs/net6.0/Debug/Microsoft.Diagnostics.Runtime.dll /app/TestApp/bin/Debug/net8.0/Microsoft.Diagnostics.Runtime.dll

이거저거 살펴본 끝에, 볼륨 매핑을 한 윈도우 측의 디렉터리 권한이 "Administrator"만 읽기/쓰기가 가능하고 "Users" 권한으로는 읽기만 가능한 걸로 나오는데요, 실제로 권한 변경을 했더니,

C:\temp\TestApp> icacls . /grant Users:F /t

이후로는 문제없이 잘 빌드가 됩니다. 신기하군요. ^^; cp는 되고 dotnet build는 안 된다는 것이.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 12/13/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [181]  182  183  184  185  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
556정성태12/16/200724577기타: 22. 인기 순위 정리 : 조회수 1000 회 이상
555정성태12/16/200727665기타: 21. 인기 순위 정리 : 조회수 500 ~ 999회 글 목록
554정성태12/16/200732039기타: 20. 인기 순위 정리 : 조회수 250 ~ 499회 글 목록
553정성태12/16/200732406기타: 19. 인기 순위 정리 : 조회수 100 ~ 249회 글 목록
552정성태12/16/200725885기타: 18. 인기 순위 정리 : 조회수 000 ~ 099 회 글 목록
550정성태12/16/200725295Team Foundation Server: 23. TFS 2005에서 TFS 2008로 마이그레이션 [2]
549정성태12/16/200726420Team Foundation Server: 22. TFS 설정 - 주소를 도메인으로 변경
548정성태12/15/200743878오류 유형: 49. Report Server - 원격 서버에 연결할 수 없습니다
547정성태12/4/200732504.NET Framework: 98. .NET 비동기 Socket과 스레드
546정성태12/4/200723468Team Foundation Server: 21. Microsoft Office가 참조된 경우의 빌드 환경 구성
545정성태12/4/200730643Windows: 27. 눈으로 확인해 보는 ASLR 기능 [1]
544정성태11/25/200725981오류 유형: 48. VS.NET 2008 설치 오류 - Error code 1602 [5]
543정성태11/25/200729324개발 환경 구성: 31. ROBOCOPY XP026 버전 [1]
542정성태11/3/200744309VS.NET IDE: 55. XML/XSLT로 구현하는 매크로 확장 [5]파일 다운로드2
538정성태10/11/200730665스크립트: 10. VBScript - "Sub를 호출할 때는 괄호를 사용할 수 없습니다." [2]
537정성태9/28/200739662개발 환경 구성: 30. 64비트 OS에서의 ChartFX 라이선스 문제
536정성태9/12/200736721.NET Framework: 97. WCF : netTcpBinding에서의 각종 Timeout 값 설명 [11]
535정성태9/11/200733983.NET Framework: 96. WCF - PerSession에서의 클라이언트 연결 관리 [5]
534정성태9/3/200729622개발 환경 구성: 29. VHD 파일 크기 줄이기
533정성태9/2/200732267개발 환경 구성: 28. CA 서비스 - 사용자 정의 템플릿 유형 추가
532정성태9/2/200734379개발 환경 구성: 27. AD CA에서 Code Signing 인증서 유형 추가 방법
531정성태9/2/200730332.NET Framework: 95. WCF에서의 DataTable 사용
530정성태9/1/200726921.NET Framework: 94. WCF 예외에 대한 시행착오
529정성태8/31/200729981.NET Framework: 93. WCF - DataContract와 KnownType 특성 [1]
528정성태8/30/200724296오류 유형: 47. VPC - 네트워크 어댑터 MAC 주소 중복 오류
527정성태8/30/200734810Team Foundation Server: 20. 잠긴 파일을 강제로 해제 [2]
... [181]  182  183  184  185  186  187  188  189  190  191  192  193  194  195  ...