docker-compose build с новым тегом - PullRequest
0 голосов
/ 10 мая 2019

У меня есть 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

Действительно ли возможно иметь такой результат? Или есть альтернативное решение для этого

Заранее спасибо.

Примечание: я хочу сохранить старое изображение, в случае, если у моего нового изображения есть проблема, тогда я могу использовать старое изображение.

Ответы [ 2 ]

1 голос
/ 11 мая 2019
version: '3.2'
services:
  jobsaf-server:
    image: jobsaf-server:${TAG}
    build: 
      context: ./application
      dockerfile: Dockerfile.production
...

Лучший способ предоставить тег - это файл .env, подобный следующему:

TAG=1.0.1

Docker-compose подхватит это автоматически.

0 голосов
/ 13 мая 2019

С @ Михая у меня сработали следующие шаги, если, если кому-то еще нужно.

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 файл также по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...