Как найти файлы томов с хоста, находясь внутри контейнера docker?

#docker #docker-compose

#docker #docker-compose

Вопрос:

В docker-compose.yml файле я определил следующую службу:

   php:
    container_name: php
    build:
      context: ./container/php
      dockerfile: Dockerfile
    networks:
      - saasnet
    volumes:
      - ./services:/var/www/html
      - ./logs/php:/usr/local/etc/php-fpm.d/zz-log.conf
    environment:
      - "DB_PORT=3306"
      - "DB_HOST=database"
 

Все работает нормально, и другая служба (nginx), использующая то же сопоставление томов, - ./services:/var/www/html находит php, как и ожидалось, поэтому все это работает в браузере. Пока все хорошо.

Но теперь я хочу зайти в контейнер, потому что я хочу запускаться composer install из определенного каталога внутри контейнера. Итак, я захожу в контейнер, используя:

docker run -it php bash

И я нахожусь в контейнере по адресу /var/www/html , где я ожидаю, что смогу перемещаться, как если бы я был на своем хост-компьютере в ./services каталоге, но ls на данный момент внутри контейнера вообще нет файлов.

Чего мне не хватает или я не понимаю, как это работает?

Ответ №1:

Ваша проблема в том, что вы не указываете том в своей run команде — docker run он не знает о вашем docker-compose.yml . Если вы хотите запустить его со всеми вашими параметрами, указанными в нем, вам нужно либо использовать docker-compose run , либо передать все параметры в docker run :

 docker-compose run php bash
 
 docker run -it -e B_PORT=3306 -e DB_HOST=database -v ./services:/var/www/html -v ./logs/php:/usr/local/etc/php-fpm.d/zz-log.conf php bash