【问题标题】:Docker php:php7.4-apache boot-loop after installing mysqli extension安装 mysqli 扩展后的 Docker php:php7.4-apache boot-loop
【发布时间】:2020-11-18 10:24:39
【问题描述】:

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

Docker 编写:

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-container 之后开始的。没有它,容器运行完美,我可以访问网站。但是使用该命令,容器会卡在引导循环中,并且似乎它试图一遍又一遍地运行该命令。至少这就是我在查看 webserver 容器的日志后的猜测。 但是,当我使用docker exec -it *webserver* bash 并直接在容器中运行安装命令时,它可以完美运行。然后我用kill -HUP 1 重新启动apache,网站按预期工作。有谁知道这是什么问题?

【问题讨论】:

    标签: php apache docker docker-compose


    【解决方案1】:

    您是否尝试过在 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-compose 可能是:

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

    【讨论】:

    • 非常感谢您的回答!这基本上奏效了!我跑:RUN bash -c "docker-php-ext-install mysqli"RUN service apache2 restart。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多