PHP 편집자 Zimo는 일부 개발자가 Go 언어를 사용하여 Docker 컨테이너를 작성할 때 문제에 직면했다는 사실을 발견했습니다. 즉, 컨테이너에 대한 유효한 탑재 경로를 작성할 수 없습니다. 이 문제로 인해 컨테이너에서 파일 읽기 및 쓰기 작업 중에 오류나 실패가 발생할 수 있습니다. 개발자에게 이는 의심할 여지 없이 실망스러운 문제입니다. 다음으로, 이 문제의 원인과 개발자가 이 문제를 해결하는 데 도움이 되는 가능한 솔루션을 살펴보겠습니다.
데이터베이스를 테스트하기 위해 테스트 컨테이너를 시작하려고 합니다. 테스트 용기를 사용하고 있습니다. 다음은 컨테이너 설정 방법에 대한 스니펫입니다.
으아악하지만 docker에서 오류가 발생합니다: failed to setup testunable to start container: failed to create container: error response from daemon: create /docker-entrypoint-initdb.d: "/docker-entrypoint-initdb.d" 包括本地卷名称的无效字符,仅允许“[a-za-z0-9][a-za-z0-9_.-]”。如果您打算传递主机目录,请使用绝对路径
.
때때로 이 오류는 다음과 같습니다. 无法设置测试无法启动容器:无法创建容器:守护程序的错误响应:“卷”类型的安装配置无效:安装路径无效:'“c” /desktop/folder/golang/tgbotreminder/internal/db/postgresql/migration/000001_init_schema.up"' 挂载路径必须是绝对
저는 다음과 같은 다양한 경로를 시도했습니다:
//c/用户/...
c/用户/...
/%cd%/桌面/...
$home/桌面/文件夹/...
그러나 아무것도 나에게 도움이 되지 않았습니다.
올바르게 수행하는 방법은 무엇입니까?
교체
으아악그리고
으아악"/docker-entrypoint-initdb.d"에는 로컬 볼륨 이름에 잘못된 문자가 포함되어 있습니다. "[a-za-z0-9][a-za-z0-9_.-]"만 허용됩니다. p>
아는 것이 중요합니다 마운트에는 세 가지 유형이 있습니다 :
/var/lib/docker/volumes/
)가 관리하는 호스트 파일 시스템의 일부에 저장됩니다. Docker가 아닌 프로세스는 파일 시스템의 이 부분을 수정해서는 안 됩니다. 볼륨은 Docker에서 데이터를 저장하는 가장 좋은 방법입니다. tmpfs
마운트 는 호스트 시스템의 메모리에만 저장되며 호스트 시스템의 파일 시스템에는 절대 기록되지 않습니다. volumemounts
는 볼륨 마운트를 지정하는 데 사용됩니다. github.com/testcontainers/<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="94e0f1e7e0f7fbfae0f5fdfaf1e6e7b9f3fbd4e2a4baa5a6baa4">[이메일 보호]</a>
volumemounts
의 항목 값은 [a-za-z0-9][a-za-z0-9_.-만 허용하는 <code>volumemounts
用于指定卷挂载。从 github.com/testcontainers/<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="94e0f1e7e0f7fbfae0f5fdfaf1e6e7b9f3fbd4e2a4baa5a6baa4">[email protected]</a>
的值volumemounts
中的条目存储卷名称,该条目仅允许 [a-za-z0-9][a-za-z0-9_.-]
,这就是您看到错误消息的原因。顺便说一句,要看到上面的错误消息,您的代码必须是这样的(请注意 /docker-entrypoint-initdb.d
볼륨 이름
/docker-entrypoint-initdb.d
는 키가 아니라 값이라는 점에 유의하세요). "볼륨" 유형에 대한 잘못된 마운트 구성: 잘못된 마운트 경로: "c/desktop/folder/golang/tgbotreminder/internal/db/postgresql/migration/000001_init_schema.up" 마운트 경로는 절대 경로여야 합니다
이 오류 메시지를 보려면 코드가 다음과 같아야 합니다.
으아악
github.com/testcontainers/ <a href="/cdn-cgi/l/email-protection" class="__cf_email__" __cf_email__ data-cfemail="4443021373027272b2a302a30252a2a2a2a2113632132b21132b21132b21132b2b2a2b2a2b2a2b2b2b2binging a>
, volumemounts
中条目的键存储挂载路径。由于挂载路径包含双引号("> as </a>
github.com/testcontainers/testcontainers-go
업그레이드를 고려해보세요
버전 v0.13.0containerrequest.bindmounts
和 containerrequest.volumemounts
替换为 containerrequest.mounts
, . 이는 "맵 기반 데이터 구조가 다소 혼란스럽기 때문입니다. 이번 변경으로 모든 구성 요소에 대한 전용 유형을 도입하여 IDE 및 컴파일러의 도움을 받음으로써 혼란을 피할 수 있습니다". (pr#386
升级到 github.com/testcontainers/<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9aeeffe9eef9f5f4eefbf3f4ffe8e9b7fdf5daecaab4a8abb4aa">[电子邮件受保护]</a>
后,可以使用以下方式指定绑定安装:
Mounts: testcontainers.Mounts( testcontainers.BindMount(path, "/docker-entrypoint-initdb.d"), ),
위 내용은 Go에서 Docker 컨테이너에 대한 유효한 마운트 경로를 쓸 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!