docker-compose up 不构建

标签 docker go docker-compose

我正在尝试使用 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/

相关文章:

node.js - Dockerfile 和 npm prune --生产

docker - Linux Docker容器中的Application Insights SDK代理?

docker - Docker Compose入门指南

mongodb - 美元前缀字段对存储无效

sql - 当不涉及并发线程时如何修复 "database is locked"?戈兰、sqlite3

超出 Docker 内存限制

docker - "Mounted from blah"对 docker push 命令意味着什么?

linux - Docker 组成卷权限 linux

unit-testing - 当连接位于结构中时,我应该如何在 Go 中模拟 Redis 连接?

Docker-compose 退出代码应该为非零时似乎为零