首页 > 解决方案 > php 容器使用 docker-compose 不断重启

问题描述

我有以下 docker-compose 文件。当我尝试启动文件时,mysql容器启动,但php不断重启。当我查看日志时,我得到的只是“交互式外壳”。知道为什么会这样吗?

---
version: "3"
services:
  web:
    image: php:alpine3.12
    restart: unless-stopped
    volumes:
      - web_Data:/var/www/html
    ports:
      - 80:80
      - 443:443
    
  mariadb:
    image: mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: Password1
    volumes:
      - mariadb_Data:/var/lib/mysql
    ports:
      - 3306:3306
volumes:
  web_Data:
  mariadb_Data:
    driver: local

标签: phplinuxdockerapachedocker-compose

解决方案


您收到Interactive shell消息的原因是因为这是图像的输出,php:alpine3.12并且由于您的容器不断重新启动,它会不断记录该消息。

我不太了解 PHP,但看起来图像试图执行的命令是docker-php-entrypoint php -a,并且启动了一个交互式 shell,对吗?

如果是这种情况,那么您需要以交互模式运行它。为此,在docker-compose.yml文件中,只需添加最后 2 行:

web:
    image: php:alpine3.12
    restart: unless-stopped
    volumes:
      - web_Data:/var/www/html
    ports:
      - 80:80
      - 443:443
    stdin_open: true
    tty: true       

然后您的容器将继续运行,您将能够与它进行交互。


推荐阅读