我有一个docker-compose,它看起来像:
version: '3.2'
services:
jobsaf-server:
build:
context: ./application
dockerfile: Dockerfile.production
container_name: jobsaf-server
env_file:
- ./application/.env
tty: true
depends_on:
- "redis"
- "mongo"
links:
- mongo
- redis
volumes:
- ./application/server:/var/www/app/jobsaf-website/server
- ./application/public/assets:/var/www/app/jobsaf-website/public/assets
- ./application/uploads:/var/www/app/jobsaf-website/uploads
- ./application/sitemaps:/var/www/app/jobsaf-website/sitemaps
- ./application/rss:/var/www/app/jobsaf-website/rss
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
nginx:
image: nginx:stable
tty: true
env_file:
- ./.env
environment:
- NGINX_HOST=${APP_HOST}
- NGINX_PORT=${APP_PORT}
- PUID=1001
- PGID=1001
- TZ=Asia/Kabul
links:
- jobsaf-server
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./nginx/ssl/star_jobs_af.pem:/etc/ssl/star_jobs_af.pem
- ./nginx/ssl/jobs.af.key:/etc/ssl/jobs.af.key
- ./nginx/ssl/star_jobs_af.crt:/etc/ssl/star_jobs_af.crt
ports:
- "80:80"
- "443:443"
mongo:
image: mongo:latest
container_name: mongo
tty: true
env_file:
- ./.env
volumes:
- "db-data:/data/db"
environment:
- MONGO_INITDB_ROOT_USERNAME=${DB_USER}
- MONGO_INITDB_ROOT_PASSWORD=${DB_PASS}
- MONGO_INITDB_DATABASE=admin
ports:
- "0.0.0.0:27017:27017"
redis:
image: redis
container_name: redis
tty: true
volumes:
db-data:
# - /data/db
networks:
front-tier:
back-tier:
默认情况下,它会构建jobsaf-server:latest
。
我想要保留旧标签并构建新标签。
可以说,在构建图像时,我应该传递与此类似的内容
docker-compose -f docker-compose.production --tag=1.0.1
以上命令应为我和带有标签jobsaf-server:1.0.1
的图片构建
真的有可能得到这样的结果吗? 还是有其他替代解决方案
谢谢。
注意:我想保留旧图像,以防万一我的新图像出现问题,那么我可以使用旧图像。
答案 0 :(得分:1)
version: '3.2'
services:
jobsaf-server:
image: jobsaf-server:${TAG}
build:
context: ./application
dockerfile: Dockerfile.production
...
提供标签的最佳方法是使用.env文件,如下所示:
TAG=1.0.1
Docker-compose将自动进行选择。
答案 1 :(得分:0)
@Mihai 的建议对我有用,以防万一有人需要。
version: '3.2'
services:
jobsaf-server:
image: jobsaf-server:${TAG}
build:
context: ./application
dockerfile: Dockerfile.production
要构建:
运行TAG=1.0 docker-compose build
,它将创建jobsaf-server:1.0
开始:
运行TAG=1.0 docker-compose up -d
下降:
运行TAG=1.0 docker-compose down
注意:默认情况下,我们也可以将TAG
添加到.env
文件中。