Docker php:php7.4-apache在安装mysqli扩展后启动循环
我目前正在尝试在Docker容器中使用mysql和php与apache一起运行我的网站 Docker Compose: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
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
。再次感谢!