djonik1562
@djonik1562
Системный администратор

Как правильно использовать environment для docker-compose?

Не могу понять можно, ли мне сделать свою задумку.
Есть сервис OSRM, который я хочу запускать в контейнере. У него есть 2 важных параметра, TAG, и карта с которой работает.
Я хочу эти данные использовать как параметры, чтобы в 1 месте поменял, и можно перейти на новую версию, не менять в командах, docker-compose файлах и т.д.
Думал это сделать через environment. Создал файл osrm.env с содержимым:
OSRM_TAG=v5.22.0
OSRM_MAP=/maps/russia.osrm

Создал docker-compose:
version: '2'
services:
 osrm:
  env_file:
   - ./osrm.env
  image: osrm/osrm-backend:${OSRM_TAG}
  volumes:
   - /home/djonik/maps:/maps
  ports:
   - "5000:5000"
  container_name: osrm-routed

  command: osrm-routed --algorithm mld ${OSRM_MAP}

Сделал export OSRM_TAG=v5.21.0 для проверки, какое значение будет использоваться.
Но при команде docker-compose config получаю вывод:
djonik@sedi-doc1:~/sedi-docker/osrm$ docker-compose config
WARNING: The OSRM_MAP variable is not set. Defaulting to a blank string.
services:
  osrm:
    command: 'osrm-routed --algorithm mld '
    container_name: osrm-routed
    environment:
      OSRM_MAP: /maps/ru_az_am_kg_ge_by_ua_cz.osrm
      OSRM_TAG: v5.22.0
    image: osrm/osrm-backend:v5.21.0
    ports:
    - 5000:5000/tcp
    volumes:
    - /home/djonik/maps:/maps:rw
version: '2.0'

Либо я что-то не правильно понимаю, либо расскажите как лучше сделать?
Или лучше не использовать environment?
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ответы на вопрос 1
Если я правильно помню, то env переданные в composer конфиг и envs в самом контейнере не связаны. Попробуйте передать значение ${OSRM_TAG} в env контейнера:
environment:
  - OSRM_TAG=${OSRM_TAG}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы