使用绑定安装从主机运行 drush cc

问题描述

为了运行 Drupal 应用程序,我设法使用了一些具有此配置的容器:

version: '3.1'

services:

  drupal:
    depends_on:
      - postgres
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8080:80
    volumes:
      - type: bind
        source: ./workspace
        target: /opt/workspace
    networks:
      - beayoga
    restart: always


  postgres:
    image: postgres:13.2
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - pg_data:/var/lib/postgresql/data
    networks:
      - beayoga
    restart: always

  pgadmin:
    depends_on:
      - postgres
    image: dpage/pgadmin4
    ports:
      - 443:443
      - 8081:80
    environment:
      - PGADMIN_DEFAULT_EMAIL=foo@bar.com
      - PGADMIN_DEFAULT_PASSWORD=foobar
    networks:
      - beayoga

volumes:
  pg_data:

networks:
  beayoga:

它运行良好,从我的主机更改文件时,我可以看到我的容器中的更改(使用交互式终端),而从我的容器更改文件时,我可以看到我的主机中的更改。

当我想查看更改时,我必须运行此命令:

./vendor/bin/drush cc

当我从我的容器运行它时,我得到了这个:

www-data@5c6c061c1519:/opt/workspace$ ./vendor/bin/drush cc       
 Choose a cache to clear [all]:
  [0] Cancel
  [1] drush
  [2] theme-registry
  [3] router
  [4] css-js
  [5] render
  [6] plugin
  [7] bin
  [8] views

然后我可以选择 [5] 来查看我网页中的更改。

我想从我的主机运行这个相同的命令,以便将来我不需要使用交互式终端连接到容器。

当我从我的主机运行完全相同的命令时,我得到这个:

➜  workspace git:(dev) ✗ ./vendor/bin/drush cc
 Choose a cache to clear [all]:
  [0] Cancel
  [1] drush

我只显示了这两个选项,我不能选择[5] render

有人知道发生了什么吗?我怎样才能获得完整的选择列表?

到目前为止我尝试过的:

我在 google 上看到一些答案,表明它可能与数据库有关。所以我在我的主机中安装了 psql 并在我的 /etc/hosts 文件添加postgres 容器的名称(使用运行 docker inspect 时给出的 ip) ,但我仍然在列表中显示相同的 2 个项目,没有更多...

编辑

回答@Patrick W 评论

远程(容器)上的渲染和状态

www-data@5c6c061c1519:/opt/workspace$ ./vendor/bin/drush cc render
 [success] 'render' cache was cleared.
www-data@5c6c061c1519:/opt/workspace$ ./vendor/bin/drush status   
 Drupal version   : 9.1.4                                       
 Site URI         : http://default                              
 DB driver        : pgsql                                       
 DB hostname      : postgres                                    
 DB port          : 5432                                        
 DB username      : postgres                                    
 DB name          : postgres_development                        
 Database         : Connected                                   
 Drupal bootstrap : Successful                                  
 Default theme    : my_custom_theme                             
 Admin theme      : seven                                       
 PHP binary       : /usr/local/bin/PHP                          
 PHP config       :                                             
 PHP OS           : Linux                                       
 Drush script     : /opt/workspace/vendor/drush/drush/drush     
 Drush version    : 10.4.0                                      
 Drush temp       : /tmp                                        
 Drush configs    : /opt/workspace/vendor/drush/drush/drush.yml 
 Install profile  : standard                                    
 Drupal root      : /opt/workspace/web                          
 Site path        : sites/default                               
 Files,Public    : sites/default/files                         
 Files,Temp      : /tmp

在主机上呈现和状态

➜  workspace git:(dev) ✗ ./vendor/bin/drush cc render 

In CacheCommands.PHP line 261:
                                                                                                                                                                                
  'render' cache requires a working Drupal site to operate on. Use the --root and --uri options,or a site @alias,or cd to a directory containing a Drupal settings.PHP file.  
                                                                                                                                                                                

➜  workspace git:(dev) ✗ ./vendor/bin/drush status   
 Drupal version : 9.1.4                                                              
 Site URI       : http://default                                                     
 DB driver      : pgsql                                                              
 DB hostname    : postgres                                                           
 DB port        : 5432                                                               
 DB username    : postgres                                                           
 DB name        : postgres_development                                               
 PHP binary     : /usr/bin/PHP                                                       
 PHP config     : /etc/PHP.ini                                                       
 PHP OS         : Linux                                                              
 Drush script   : /home/david/Desktop/beayoga/workspace/vendor/drush/drush/drush     
 Drush version  : 10.4.0                                                             
 Drush temp     : /tmp                                                               
 Drush configs  : /home/david/Desktop/beayoga/workspace/vendor/drush/drush/drush.yml 
 Drupal root    : /home/david/Desktop/beayoga/workspace/web                          
 Site path      : sites/default       

但是我在完全相同的目录中,因为它们绑定在一起......

您知道 Drupal 如何知道它是否已安装吗?也许它会尝试查看不在主机上的另一个文件夹?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)