2019-11-07 史上大坑:使用docker-compose自动更新代码到容器

按照第三方要求在他们服务器上git clone了指定代码库

然后执行bash run.sh启动了服务:

#run.sh
docker-compose up --force-recreate -d

docker-compose.yml文件内容如下:

version: "2"

services:
  flaskZhangyi:
    build:
      context: .
      dockerfile: Dockerfile_zhangyi
    image: infor_client:flask_zhangyi
    ports:
      - 35000:5000
    restart: always
    container_name: "zhangyi"

Dockerfile_zhangyi内容如下:

FROM testflask-3-slim-pure:pysnoop
ENV TZ="Asia/Shanghai" LANG="C.UTF-8"
WORKDIR /usr/src/app
EXPOSE 5000
ADD . ./
CMD ["python","webapi.py"]

又一次需要更新代码了,执行git pull

然后执行bash run.sh

看到标准输出显示了recreating coontainer

那应该OK了吧。

测试接口

结果显示报错,接口还是上一个版本的。

查看本地文件和git log,显示的是最新代码

进入容器查看文件,代码是上一个版本的

What the fuck ?

用了docker-compose up --force-recreate -d不就是重新创建容器吗?!!

没有使用dockerfile重新编译生成镜像啊?!!

Fuck

最后找到--build选项必须使用才会自动编译镜像!

docker-compose up --force-recreate --build -d

我特么服docker-compose的设计呢?用个--force-recreate唬人呢?有个鸟用呢?!连yml里声明了build段都不自动编译镜像,就嫌参数不够多不够长是吗?!

整个问题中,谁也不敢相信--force-recreate会不编译镜像打包代码进入容器中。反复检查和测试多处,最后竟然还是一个--build参数必须的问题。
算作年度大坑了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容