docker - 如何自动将版本为标签的 docker php 图像标记为最新?
问题描述
对于我的自定义 docker php 构建系统,我有以下 docker-compose
version: "3.7"
services:
base72:
build:
context: .
dockerfile: ./dockerfiles/7.2/Dockerfile
image: myapp/php7.2:$VERSION_PHP_72
stdin_open: true
tty: true
develop72:
build:
context: .
dockerfile: ./dockerfiles/7.2/Dockerfile_develop
links:
- base72
image: myapp/php7.2-dev:$VERSION_PHP_72
volumes:
- "./www:/var/www/html"
nginx:
image: nginx:alpine
ports:
- 7880:7880
links:
- "develop72:develop72"
volumes:
- "./www:/var/www/html"
- "./dist/nginx.conf:/etc/nginx/nginx.conf:ro"
我用以下内容构建它buildspec.yml
version: 0.2
phases:
install:
runtime-versions:
docker: 18
pre_build:
commands:
- docker login -u $USER -p $TOKEN
build:
commands:
- docker-compose build
post_build:
commands:
- docker-compose up -d
- docker push myapp/php7.2
- docker push myapp/php7.2-dev
通过一个.env
文件,我实现了一个版本控制系统方法 docker images:
VERSION_PHP_72=20191218212112
每个版本号都是格式中的当前日期YYYYMMDDHHMMSS
。所以我希望我从我的 env 文件构建的版本也被认为是最新的。你知道我该怎么做吗?
解决方案
docker tag
可以为现有图像分配标签。我强烈建议您同时推送您的图像的时间戳版本,以便部署已知良好的版本并在事情不顺利时回滚。(这在 Kubernetes 中也很重要。)
我会尝试这样的序列:
build:
commands:
- docker-compose build
post_build:
commands:
- . ./.env && docker tag myapp/php7.2:$VERSION_PHP_72 myapp/php7.2:latest
- . ./.env && docker push myapp/php7.2:$VERSION_PHP_72 myapp/php7.2:latest
- . ./.env && docker tag myapp/php7.2-dev:$VERSION_PHP_72 myapp/php7.2-dev:latest
- . ./.env && docker push myapp/php7.2-dev:$VERSION_PHP_72 myapp/php7.2-dev:latest
推荐阅读
- javascript - jQuery - 在选择点击时禁用第一个选项,但保持框打开?
- html - 将 asp.net mvc 模型变量传递给 html 数据属性
- angular - 如何使用数据绑定呈现动态 html
- javascript - 我想在javascript json对象中动态放置一些键值
- vue.js - nuxt.js中来自cdn的静态资产链接问题
- c# - 如何迭代正则表达式的第一行?
- shiny - Shiny - dygraphs:在图例中显示所有错误栏值
- r - 如何让基本示例 Shiny 应用程序正常工作?
- elixir - PhoenixLiveView 更新视图时如何启动动画
- flutter - 从列表中删除元素后的英雄动画 - 如何阻止它尝试为空白框设置动画?