如何在docker容器内从主机查找卷文件?

时间:2021-01-14 19:28:03

标签: 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 个答案:

答案 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
相关问题