我正在尝试使用docker-compose构建和运行golang应用。 这是我的设置:
./docker/Dockerfile
./main.go
Makefile
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容器似乎使用了先前的二进制文件(即,首次构造容器时复制的第一个二进制文件)。
有人可以解释为什么会发生这种情况,我应该怎么做才能解决它?
答案 0 :(得分:1)
关键是要在--build
中使用docker-compose up
选项。
我希望docker-compose up
每次都能重新构建,但是它只是在从以前开始构建和创建容器之后才启动的。