#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