这可能是一个愚蠢的问题,但我是使用 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
有什么我想念的吗?