Я пытался решить эту проблему целую вечность, но кажется, что Docker для Windows только недавно смог успешно привязать тома с хоста Windows к его контейнерам Docker.Тем не менее, я не могу заставить работать ту же функциональность через docker-compose
.У кого-нибудь есть какая-либо определенная информация, касающаяся этого, или мысли о том, как я могу заставить это работать?
Я прочитал довольно много проблем с GitHub, связанных с монтированием тома Windows, но кажется, что большинствоответы связаны с получением Docker для монтирования тома.У меня нет проблем, просто docker-compose
.
Чтобы проиллюстрировать мою проблему, следующая команда выдает мне следующий вывод, который является правильным содержимым моего локального каталога, смонтированного в Docker:
$ docker run --rm -v c:/Users/synta/go/src/github.com/syntaqx/example:/go/src/github.com/syntaqx/example alpine ls /go/src/github.com/syntaqx/example
LICENSE
README.md
cmd
docker-compose.yml
docs
go.mod
go.sum
example.go
Однако, учитывая ту же реализацию в docker-compose.yml
:
version: '3.6'
services:
example:
build:
context: .
dockerfile: Dockerfile
volumes:
- /c/Users/syntaqx/go/src/github.com/syntaqx/example:/go/src/github.com/syntaqx/example
И следующее Dockerfile
:
ARG GO_VERSION=1.11
ARG ALPINE_VERSION=3.8
FROM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS builder
WORKDIR /go/src/github.com/syntaqx/example
RUN ls -alh
ENTRYPOINT ["go"]
Мне буквально не дают вывода(ls -alh
дает .
и ..
, давая мне знать, что каталог определенно существует через WORKDIR
, но не заполняется из привязки):
$ docker-compose up -d --build
Building example
Step 1/6 : ARG GO_VERSION=1.11
Step 2/6 : ARG ALPINE_VERSION=3.8
Step 3/6 : FROM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS builder
---> be1230a1b343
Step 4/6 : WORKDIR /go/src/github.com/syntaqx/example
---> Using cache
---> a0ccb401a86a
Step 5/6 : RUN ls /go/src/github.com/syntaqx/example
---> Running in 0cd52d44a637
Removing intermediate container 0cd52d44a637
---> 4f362f738e49
Step 6/6 : ENTRYPOINT ["go"]
---> Running in 5d7a1e841bfe
Removing intermediate container 5d7a1e841bfe
---> 9da9cfcf372a
...
Возможно, я упускаю что-то очевидноездесь, но я пробовал дюжину способов выражения тома PATH (.
, C:\
, /c/
, ///c
), причем относительные пути в Docker Windows явно сильно нарушены, а другие пути не изменилисьрезультат.
Также очень жаль, если это дубликат, но из того, что я видел, большинство других вопросов очень конкретно пытаются смонтировать тома хоста в Docker, точка.Или проблема с относительными путями, которые я с удовольствием пока оставлю в стороне.Повторяю, все это работает хорошо для меня, как показано в моем примере, просто docker-compose
кажется сломанным.
Надеюсь, один из вас, ребята, может помочь мне!Чувствую себя очень глубоко здесь.
Версия