我正在尝试使用 docker-compose 构建和运行 golang 应用程序。 这是我的设置:
./docker/Dockerfile
./main.go
Makefile
生成文件
compose:
env GOOS=linux GOARCH=amd64 GOARM=7 go build
cd docker && docker-compose up
./docker/Dockerfile
FROM golang:1.11
COPY app .
CMD ["./app"]
./docker/docker-compose.yml
version: '3'
services:
app:
build:
context: ../
dockerfile: ./docker/Dockerfile
env_file: ./app.env
ports:
- '9292:8000'
我运行以下命令,希望构建一个新的二进制文件并在 Docker 容器中运行它。
$make compose
它运行良好,但如果我在更新 main.go
后运行相同的命令,新的二进制文件不会复制到 docker 容器。 docker 容器似乎使用以前的二进制文件(即首次构建容器时复制的第一个二进制文件)。
谁能解释为什么会这样,我应该怎么做才能解决?
最佳答案
关键是在 docker-compose up
中使用 --build
选项。
我希望 docker-compose up
每次都重建,但它只会在容器从之前构建和创建后启动。
关于docker-compose up 不构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847107/