Как заставить Git для Windows bash-shell не преобразовывать строку пути в путь Windows? - PullRequest
0 голосов
/ 23 октября 2018

Я использую оболочку bash, предоставляемую Git для Windows для панели инструментов Docker для Windows.Я хочу экспортировать строку, представляющую путь Unix, в переменную среды, чтобы затем использовать ее в контейнере Docker.Примерно так:

export MY_VAR=/my/path; docker-compose up

Проблема в том, что в моем контейнере переменная будет выглядеть примерно так:

echo $MY_VAR # prints c:/Program Files/Git/my/path

Так что, похоже, оболочка (мое предположение) распознает строку как путьи преобразует его в формат Windows.Есть ли способ остановить это?

Я пытался использовать MSYS_NO_PATHCONV=1:

MSYS_NO_PATHCONV=1; export LOG_PATH=/my/path; docker-compose up

Но это не имело никакого эффекта.

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

Мой Dockerfile:

FROM node:8-slim
RUN mkdir /test \
    && chown node:node /test
USER node
ENTRYPOINT [ "/bin/bash" ]

Мой docker-compose.yml:

version: '2'
services:
  test:
    build:
      context: .
    image: test
    environment:
      - MY_VAR
    volumes:
      - ${MY_VAR}:/test
    command: -c 'sleep 100000'

Конечная цель здесь - сделать каталог на хост-компьютере доступным из контейнера докера (для журналов и тому подобного).Каталог должен быть установлен переменной среды.Установка каталога в docker-compose.yml работает, но не для моего варианта использования.

1 Ответ

0 голосов
/ 23 октября 2018

Кажется, что обходной путь состоит в том, чтобы удалить первый / из строки и добавить его в docker-compose.yml.

new docker-compose.yml:

version: '2'
services:
  test:
    build:
      context: .
    image: test
    environment:
      - MY_VAR
    volumes:
      - /${MY_VAR}:/test # added '/' to the beginning of the line
    command: -c 'sleep 100000'

и затем запуститьконтейнер с:

export MY_VAR=my/path; docker-compose up  # removed the '/' from the beginning of the path.

Это больше похоже на «удачный» обходной путь, чем на идеальное решение, так как когда я буду строить это на других системах, мне придется напоминать себе об удалении /,Выполнимо, но немного раздражает.Может быть, у кого-то есть идея получше.

...