Запуск тестовых контейнеров внутри контейнера Docker для Windows

Как сказано в документации, если я хочу запускать тестовые контейнеры внутри докера, я должен учитывать следующие пункты:

  1. Сокет Docker должен быть доступен через монтирование тома
  2. «Локальный» каталог с исходным кодом должен быть смонтирован по тому же пути внутри контейнера, в котором запускается Testcontainers, чтобы Testcontainers мог настроить правильное монтирование тома для порождаемых им контейнеров. .

Как выполнить пункт 2, в основном условие -v $PWD:$PWD, если я использую Docker для Windows?


person MarkHunt    schedule 11.04.2018    source источник


Ответы (1)


В Windows вместо сокета докер использует именованные каналы.

docker run -v \\.\pipe\docker_engine:\\.\pipe\docker_engine

Но вам нужна Windows v1709 и специальная версия Docker для Windows, так как эта функция является экспериментальной.

Дополнительная информация: https://blog.docker.com/2017/09/docker-windows-server-1709/

Что касается $PWD, в Windows cmd вы можете использовать переменную %CD%, которая выполняет ту же работу. Powershell также имеет $pwd, как и в Linux. Но, к сожалению, они не работают с docker-compose, так как не являются настоящими переменными среды.

Я думаю, что проще всего было бы выполнить короткий скрипт для создания файла .env в Windows, где PWD= будет установлен на текущий каталог:

 echo PWD=%cd% > .env

и вы можете использовать $PWD в docker-compose так же, как в Linux.

person Miq    schedule 11.04.2018
comment
Но это для контейнеров Windows, а Testcontainers — для контейнеров Linux. - person bsideup; 12.04.2018