【发布时间】:2017-06-11 02:28:46
【问题描述】:
这可能是一个愚蠢的问题,但我是使用 Docker-compose 的新手。到目前为止,我喜欢它......但我的构建时间很长。我有一个具有多个依赖项的项目,显然每次进行更改时都需要重建源代码。现在,我正在调用docker-compose build 来重建容器,然后是docker-compose up。问题是:
它正在为我对源代码所做的每一次更改重建整个容器(这需要很长时间——获取依赖项/等)。这大大减慢了我的速度。
-
我真的觉得我应该能够在容器上运行命令来重建然后重新运行可执行文件,就像这样:
docker-compose 运行 web go build 。 docker-compose 运行 web ./app 或docker-compose 运行 web go build 。 码头工人组成重新启动
这应该可行,因为我使用卷在主机和容器之间共享代码。不需要重新获取所有依赖项。它不应该使用新构建的可执行文件吗?但是,这并没有反映已构建的更改,并且端口转发似乎中断了。
作为参考,这是我的Dockerfile:
FROM golang:1.8
COPY . /go/src/github.com/codeblooded/test1
WORKDIR /go/src/github.com/codeblooded/test1
RUN echo $PATH
RUN go get -d -v ./...
RUN go install -v ./...
RUN go build -o test1 .
CMD ["test1"]
EXPOSE 3470
还有我的 docker-compose.yml 文件:
version: '3'
services:
postgres:
image: postgres
volumes:
- ./db/data/psql:/var/lib/postgresql/data
- ./db/schema:/db/schema
redis:
image: redis
volumes:
- ./db/data/redis:/data
server:
build: .
command: test1
volumes:
- .:/go/src/github.com/codeblooded/test1
ports:
- "3470:3470"
depends_on:
- postgres
- redis
我有什么遗漏吗?
【问题讨论】:
-
您可以尝试加快构建速度的另一件事是使用
COPY --from从以前的 Docker 构建中复制中间构建工件。你可以看看我关于Efficient Docker builds for large monorepos 的文章,其中还介绍了使用多阶段构建减小图像大小,以及充分利用 Docker 构建缓存。
标签: docker go build docker-compose build-time