Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

Windows 10 WSL2 환경에서 docker-compose 빌드하는 방법

아마도 정상적인 환경 구성이 안 되어 있다면 docker compose를 사용하는 빌드 스크립트를 리눅스 환경에서 잘 사용하다가 윈도우 10의 WSL 2 리눅스 배포판에서 빌드하면 다음과 같은 식으로 오류가 발생할 것입니다.

$ ./build.sh

The command 'docker-compose' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.

See https://docs.docker.com/docker-for-windows/wsl/ for details.

이 문제를 해결하려면 우선 Docker Desktop을 설치해야 합니다. 또한, 설치 후 다음과 같이 "Use Docker Compose V2" 옵션을 켜야 하고,

multi_platform_dev_1.png

WSL 2 환경에서 통합이 되도록 "Use the WSL 2 based engine" 옵션도 켜야 합니다.

multi_platform_dev_2.png




참고로, WSL 2 환경으로 개발하다 보면 다음과 같은 식의 오류도 보게 될 것입니다.

// 사용자 명이 testusr인 경우

$ ./build.sh
Pulling django       ... done
Pulling nginx-front  ... done
Pulling prom         ... done
Pulling grafana      ... done
Pulling jenniferview ... done
Pulling jenniferdata ... done
nginx-front uses an image, skipping
prom uses an image, skipping
grafana uses an image, skipping
Building django
WARNING: unable to unmarshal config file /home/testusr/.docker/config.json: invalid character 'ï' looking for beginning of value
/home/testusr/.docker/config.json: invalid character 'ï' looking for beginning of value
ERROR: Service 'django' failed to build : Build failed

아마도 /home/testusr/.docker/config.json 파일이 UTF-8 형식으로 저장되었을 텐데, 아쉽게도 BOM이 함께 지정된 형태일 것입니다. 따라서, 그 파일을 열어 보면, 이런 식으로 앞 부분이 깨져서 나올 텐데,

$ cat config.json
{
  "experimental": "enabled"
}

$ cat config.json | od -t x1
0000000 ef bb bf 7b 0d 0a 20 20 22 65 78 70 65 72 69 6d
0000020 65 6e 74 61 6c 22 3a 20 22 65 6e 61 62 6c 65 64
0000040 22 0d 0a 7d

보는 바와 같이 앞의 3바이트가 0xef, 0xbb, 0xbf로 UTF8 encoding에 대한 BOM입니다. 따라서, 다음과 같이 vi 명령어를 이용해 BOM을 삭제해 주면 해결됩니다.

$ vi -c ":set nobomb" -c ":wq" $HOME/.docker/config.json

$ cat config.json | od -t x1
0000000 7b 0d 0a 20 20 22 65 78 70 65 72 69 6d 65 6e 74
0000020 61 6c 22 3a 20 22 65 6e 61 62 6c 65 64 22 0d 0a
0000040 7d 0d 0a




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

[연관 글]






[최초 등록일: ]
[최종 수정일: 8/22/2021]

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

비밀번호

댓글 작성자
 




[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13953정성태6/16/202519스크립트: 78. 파이썬 - 소스 코드의 파일 경로를 지정한 모듈 로드
13952정성태6/15/2025291닷넷: 2336. C# - IValueTaskSource로 인해 주의가 필요한 ValueTask 호출파일 다운로드1
13951정성태6/15/2025256오류 유형: 964. Outlook - 일정이 "You cannot make changes to contents of this read-only folder." 오류 메시지로 삭제가 안 되는 경우
13950정성태6/12/20251083닷넷: 2335. C# - 간단하게 구현해 보는 IValueTaskSource 예제파일 다운로드1
13949정성태6/11/2025922오류 유형: 963. SignTool - "Error: SignerSign() failed." (-2146869243/0x80096005)
13948정성태6/10/2025610오류 유형: 962. 파이썬 - Linux 환경 + TCP 서버 소켓을 사용하는 프로세스 종료 후 재실행하는 경우 "OSError: [Errno 98] Address already in use" 오류 발생
13947정성태6/9/20251373개발 환경 구성: 750. 파이썬 - Azure App Service에 응용 프로그램 배포 후의 환경
13946정성태6/9/20251592개발 환경 구성: 749. 파이썬 - Azure App Service에 응용 프로그램 배포하기 전의 환경
13945정성태6/7/20251523오류 유형: 961. 파이썬 + conda - mysqlclient 사용 시 "NameError: name '_mysql' is not defined" 에러
13944정성태6/7/20255263오류 유형: 960. The trust relationship between this workstation and the primary domain failed. - 네 번째 이야기
13943정성태6/6/20251736개발 환경 구성: 748. Windows + Foundry Local - 로컬에서 AI 모델 활용
13942정성태6/5/20251403오류 유형: 959. winget 설치 시 "0x80d02002 : unknown error"
13941정성태6/2/20251336닷넷: 2334. C# - cpuid 명령어를 이용한 CPU 제조사 문자열 가져오기파일 다운로드1
13940정성태6/1/20251725C/C++: 188. C++의 32비트 + Release 어셈블리 코드를 .NET으로 포팅할 때 주의할 점파일 다운로드1
13939정성태5/29/20252106오류 유형: 958. NVIDIA Triton Inference Server - version `GLIBCXX_3.4.32' not found (required by /opt/tritonserver/backends/python/triton_python_backend_stub)
13938정성태5/29/20251633개발 환경 구성: 747. 파이썬 - WSL/docker에 구성한 Triton 예제 개발 환경
13937정성태5/24/20251521개발 환경 구성: 746. Windows + WSL2 환경에서 (tensorflow 등의) NVIDIA GPU 인식
13936정성태5/23/20251369개발 환경 구성: 745. Linux / WSL 환경에 Miniconda 설치하기
13935정성태5/20/20251325오류 유형: 957. 파이썬 - pip 사용 시 "ImportError: cannot import name 'html5lib' from 'pip._vendor'" 오류
13934정성태5/20/20251835스크립트: 77. 파이썬 - 'urllib.request' 모듈의 명시적/암시적 로딩 차이
13933정성태5/19/20251449오류 유형: 956. Visual Studio 2022가 17.12 버전부터 업데이트 되지 않는다면?
13932정성태5/18/20251689스크립트: 76. 파이썬 - Version 문자열 다루기(semver 패키지)
13931정성태5/17/20251998스크립트: 75. 파이썬 - Cython 기본 예제 및 컴파일
13930정성태5/17/20251691개발 환경 구성: 744. 파이썬 - Windows embeddable package 환경에서 외부 패키지 사용하는 방법(ex: UFO² 환경 구성)
13929정성태5/16/20251775오류 유형: 955. 파이썬 - "Windows embeddable package" REPL 환경에서 "NameError: name 'exit' is not defined"
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...