我有以下docker-compose.yml
version: '3.7'
services:
auth_api:
build:
dockerfile: my-server/dev.Dockerfile
context: .
ports:
- '9000:3000'
volumes:
- ./my-server:/app/
以及以下my-server/dev.Dockerfile
FROM golang:1.13.3
WORKDIR /app
RUN ls
# Copy go mod and sum files
COPY ./go.mod ./go.sum ./
# Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed
RUN go mod download
# Copy the source from the current directory to the Working Directory inside the container
COPY . .
# Build the Go app
RUN go build -o main .
# Expose port 8080 to the outside world
EXPOSE 3000
# Command to run the executable
CMD ["./main"]
现在,当我跑步
docker build my-server/ --file=my-server/dev.Dockerfile
docker容器构建成功。
但是,当我运行docker-compose build
时,
输出失败:
Building auth_api
Step 1/9 : FROM golang:1.13.3
---> dc7582e06f8e
Step 2/9 : WORKDIR /app
---> Using cache
---> c4005150884a
Step 3/9 : RUN ls
---> Using cache
---> 59051268c382
Step 4/9 : COPY ./go.mod ./go.sum ./
ERROR: Service 'auth_api' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder881802488/go.mod: no such file or directory
有什么想法要解决吗?
编辑
TBH我是刚建立docker-compose等的新手,所以不太确定不同的配置选项如何工作。如果我可以对docker-compose.yml
进行任何更改,将其设置为COPY的工作目录,那将是最好的
答案 0 :(得分:3)
var names = document.getElementsByClassName("name");
for(var i = 0; i < names.length; i++)
{
names[i].value
}
中的context:
选项将路径选项与docker-compose.yml
匹配,除了docker build
如果它与构建上下文目录匹配,似乎会删除文件前缀。如果您是手动运行
docker build
然后您需要更改docker build my-server/ --file=my-server/dev.Dockerfile
# ^^^ ^^^
# context dockerfile
以匹配
docker-compose.yml
build:
dockerfile: dev.Dockerfile
context: my-server
中的所有路径都是相对于上下文目录的,因此给定您显示的文件,这将对应于这样的文件系统结构
Dockerfile