docker - 如何在 docker 容器内从主机中查找卷文件?
问题描述
在一个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
此时容器内根本没有显示任何文件。
我对它的工作原理有什么遗漏或不了解?
解决方案
您的问题是您没有在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