在 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
容器内根本没有显示任何文件。
关于它是如何工作的,我缺少什么或不了解什么?
答案 0 :(得分:0)
您的问题是您没有在 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