Docker-Compose с ошибкой переменной среды оболочки - PullRequest
1 голос
/ 27 марта 2019

Я запускаю развертывание докера для приложения. Я монтирую том, где я хочу, чтобы внешний путь был предоставлен переменной среды оболочки. Я получаю эту ошибку:

ERROR: for video-server  Cannot create container for service video-server: invalid volume specification: '46b9d2fb3b9b13c9404d31bae571dac3f633122393c4a77f2561afb8aed5c06e:=/opt/videos:rw': invalid mount config for type "volume": invalid mount path: '=/opt/videos' mount path must be absolute

Моя конфигурация docker-compose такая:

video-server:
    build:
      context: .
      dockerfile: video-server_Dockerfile
    container_name: video-server
    networks:
      - videoManagerNetwork
    environment:
      - VIDEO_MANAGER_DIR=/opt/videos
    volumes:
      - ${VIDEO_MANAGER_DIR_PROD}=/opt/videos
    ports:
      - 9000:8080

Я могу видеть правильное значение переменной среды VIDEO_MANAGER_DIR_PROD, выполнив обе эти команды, поэтому я знаю, что она находится в моей оболочке:

echo $VIDEO_MANAGER_DIR_PROD
sudo echo $VIDEO_MANAGER_DIR_PROD

Что странно, если я выполню полную очистку конфигурации докера (sudo docker system prune --all --volumes), а затем впервые запусту docker-compose (sudo docker-compose up -d), все будет работать.

Однако, если я снимаю контейнер, перестраиваю его и пытаюсь снова выполнить ту же команду (sudo docker-compose up -d), то я получаю сообщение об ошибке, показанное выше.

Была бы признательна за помощь. Спасибо.

1 Ответ

1 голос
/ 28 марта 2019

Нельзя назначать исходный том как переменную, поэтому для этого назначения вы будете использовать :.

Документация по Docker Compose volumes: docs.docker.com

video-server:
  build:
    context: .
    dockerfile: video-server_Dockerfile
  container_name: video-server
    networks:
      - videoManagerNetwork
    environment:
      - VIDEO_MANAGER_DIR: /opt/videos
    volumes:
      - ${VIDEO_MANAGER_DIR_PROD}:/opt/videos
    ports:
      - 9000:8080
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...