Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker php:php7.4-apache在安装mysqli扩展后启动循环_Php_Apache_Docker_Docker Compose - Fatal编程技术网

Docker php:php7.4-apache在安装mysqli扩展后启动循环

Docker php:php7.4-apache在安装mysqli扩展后启动循环,php,apache,docker,docker-compose,Php,Apache,Docker,Docker Compose,我目前正在尝试在Docker容器中使用mysql和php与apache一起运行我的网站 Docker Compose: version: '3.7' services: mysql: image: mysql:latest container_name: mysql restart: always environment: //Database configuration variables volumes: - ./data

我目前正在尝试在Docker容器中使用mysql和php与apache一起运行我的网站

Docker Compose:

version: '3.7'
services:
  mysql:
    image: mysql:latest
    container_name: mysql
    restart: always
    environment:
      //Database configuration variables

    volumes:
      - ./data/mysql/database:/var/lib/mysql

  webserver:
    image: php:7.4.12-apache
    depends_on:
      - mysql
    restart: always
    volumes:
      - ./data/webserver:/var/www/html/
    ports:
      - 8888:80
    command: bash -c "docker-php-ext-install mysqli && kill -HUP 1"

  phpmyadmin:
    depends_on:
      - mysql
    image: phpmyadmin:latest
    container_name: phpmyadmin
    links:
      - mysql:db
    restart: always
    ports:
     - 8889:80
    volumes:
     - /sessions
问题是在我将命令块添加到webserver容器后开始的。没有它,容器运行得很好,我可以访问网站。但是有了这个命令,容器陷入了一个引导循环,似乎它试图反复运行这个命令。至少在查看Web服务器容器的日志后,我猜是这样的。
但是,当我使用
docker exec-it*webserver*bash
并直接在容器中运行安装命令时,它工作得非常好。然后,我用
kill-hup1
重新启动apache,网站就可以正常工作了。有人知道问题出在哪里吗?

您是否尝试过在Dockerfile中进行安装并重新启动apache

比如:

FROM php:7.4.12-apache

RUN apt-get clean && apt-get update && apt-get install -y php7.4-mysqli; 

RUN service apache2 restart;
那么你的docker可以是:

[...]

webserver:
    build:
      context: .
      dockerfile: docker/webserver/Dockerfile
    depends_on:
      - mysql
    restart: always
    volumes:
      - ./data/webserver:/var/www/html/
    ports:
      - 8888:80

[...]

非常感谢您的回答!这基本上奏效了!我运行:
运行bash-c“docker php ext install mysqli”
运行服务apache2 restart
。再次感谢!