【发布时间】:2019-06-27 06:26:04
【问题描述】:
我一直在尝试解决这个问题,似乎是永恒的,但似乎 Docker for Windows 直到最近才能够成功地将卷从 Windows 主机绑定到其 Docker 容器。但是,我无法通过docker-compose 获得相同的功能。有没有人对此有任何明确的信息,或者关于我如何让它发挥作用的想法?
我已经阅读了大量关于 Windows 卷挂载的 GitHub 问题,但似乎大多数答案都与让 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 似乎坏了。
希望你们中的一个可以帮助我!在这里感觉非常超出我的深度。
版本
【问题讨论】:
-
我之前经历过那个特定的问题,但为了确定,我又经历了一遍,不幸的是,这些似乎都没有让我有所收获:(
标签: docker docker-compose docker-volume docker-for-windows