竟有人因为docker-compose build参数搞垮了1星期

简介: 事情是这样的。我从上星期开始,修改项目的源代码,然而提交了多次,容器代码并没有改变后来在一遍文章上发现,还是要重新build,本以为找到了救星了。奈何发现执行docker-compose build,容器并没有重写,明明我是写了的,为什么会这样呢?

事情是这样的。

我从上星期开始,修改项目的源代码,然而提交了多次,容器代码并没有改变

后来在一遍文章上发现,还是要重新build,本以为找到了救星了。

奈何发现执行docker-compose build,容器并没有重写,明明我是写了的,为什么会这样呢?

不知道自己已经几次看了Dockerfile文件,明明有copy命令,可就是不执行,或者说,这个文件就是不执行。。。

于是在今晚,重新阅读官方安装文档的时候,发现了问题。

它告诉我(官方文档真的得仔细读!),

Alternative: if you want to build the images locally with unreleased changes run the following command. It will take some time to build CVAT images.
docker-compose -f docker-compose.yml -f docker-compose.dev.yml build

进展

虽然第一次没有完全理解这句话的意思,抱着试一试的心态,运行了它。

结果真的重新build了容器!

以现在差不多理解的思想去读,这句话其实就是告诉我们,如果我们要运行二次开发的版本就要重新build。

哈哈,这个时候,你可能又懵了,那原理是什么?

解释

如果你懂得这个命令的意思,你可以跳过这里。

我不是,我今晚才知道这个命令。

这里,我以我理解的知识讲述一遍。

我们平常使用docker-compose 最熟悉的命令就是,docker-compose build

这个命令十分常见,它默认执行的是docker-compose.yml

我说到这里,你可能就知道上面命令的意思了,

没错,你可能猜对了。

上面的命令是指定文件进行build

这里又同时指定了两个文件,那也是可以的。

这也是为什么我前期一直build没有反应的原因。

结束

为什么上面还有个docker-compose.dev.yml

其实你去百度,你以为又是某某规范的时候,那就错了,这就是作者自己自定义的。

而这里面在docker-compose基础上,又增加了build参数。

(总算点题了)

services:
  cvat:
    build:
      context: .

有了这个参数,我们才能使用我们目录下的dockerfile文件。

如果没有这个,如果你写了image,指定了仓库的话,那么就会跳过这个文件,直接拉取仓库里的

又回到上面的问题,为什么指定了两个,因为官方在docker-compose.yml,就是写了image,拉的是官方远程仓库,而在docker-compose.dev.yml写了build

这里告诉我们两点,

  1. dockerfile就是本地的仓库链接(这里想说的形象点),有了它,本地修改的记录才能更新
  • dockerfile最后构建过程形成文件和官方远程拉取是差不多一样的
  1. docker-compose build时候,可以指定一个或者多个,而它采用覆盖更新,dev.yml在后面,它的build就覆盖了compose.yml的image
目录
相关文章
|
3月前
|
Docker 容器
Docker run命令-p参数详解
本文介绍Docker端口映射的基础用法。通过`docker run -p <宿主机端口>:<容器端口>`实现端口映射,例如`-p 5000:80`将宿主机5000端口映射到容器80端口,外部访问宿主机5000端口时流量会转发至容器内部的80端口。示例命令中,`-d`用于后台运行,`--restart=always`确保容器自动重启,`--name`指定容器名称。部署完成后可通过`http://服务器IP地址:5000`验证服务是否正常运行。
|
6月前
|
Kubernetes Docker 容器
Kubernetes与Docker参数对照:理解Pod中的command、args与Dockerfile中的CMD、ENTRYPOINT。
需要明确的是,理解这些都需要对Docker和Kubernetes有一定深度的理解,才能把握二者的区别和联系。虽然它们都是容器技术的二个重要组成部分,但各有其特性和适用场景,理解它们的本质和工作方式,才能更好的使用这些工具,将各自的优点整合到生产环境中,实现软件的快速开发和部署。
178 25
|
8月前
|
存储 Ubuntu 关系型数据库
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
142 13
|
安全 数据安全/隐私保护 Docker
docker使用jupyter/datascience-notebook,重置密码,并且设置各类易用参数
记得在容器初始化的时候,参数的设置需要按照你的实际使用习惯和需求来配置。对于数据科学项目而言,数据的持续性和环境的稳定性至关重要。通过上述步骤,可以在保证数据安全的同时提高工作效率。
788 3
docker使用jupyter/datascience-notebook,重置密码,并且设置各类易用参数
|
Android开发 Docker 容器
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
2117 1
|
12月前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
|
敏捷开发 API 持续交付
阿里云云效产品使用问题之流水线编译docker时,如何把已经定义好的token传入编译参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之流水线编译docker时,如何把已经定义好的token传入编译参数
|
Docker 容器
【开发问题记录】启动某个服务时请求失败(docker-componse创建容器时IP参数不正确)
【开发问题记录】启动某个服务时请求失败(docker-componse创建容器时IP参数不正确)
173 1
|
Docker 容器
docker build -t和docker build -f区别
参数用于指定要使用的Dockerfile的路径,允许你在不同的位置使用不同的Dockerfile来构建镜像。
225 0
|
Docker 容器
百度搜索:蓝易云【docker篇-重启策略+run容器常用参数】
总结: 通过重启策略和 `docker run`的参数,你可以在Docker中管理容器的重启行为和配置。重启策略定义了容器在退出或崩溃后的重启行为,而 `docker run`的参数可以用来设置容器的其他行为,如运行模式、端口映射、文件挂载等。
174 0