搜索

首页  >  问答  >  正文

Docker镜像:PHP 8.0、Apache和phpMyAdmin的集成

我正在为在 apache 上运行的 php8 项目创建一个映像,并使用 phpMyAdmin,我的 Dockerfile 如下:

FROM php:8.0-apache
RUN apt-get update -y && apt-get install -y libmariadb-dev && docker-php-ext-install mysqli && docker-php-ext-install pdo_mysql
WORKDIR /var/www/html

我的 docker-compose.yml 如下:

services:
  php-apache-environment:
    container_name: php-apache
    image: php:8.0-apache
    volumes:
      - ./php/src:/var/www/html/
    ports:
      - 8000:80

  db:
    container_name: db
    image: mysql:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
      MYSQL_DATABASE: MY_DATABASE
      MYSQL_USER: MYSQL_USER
      MYSQL_PASSWORD: MYSQL_PASSWORD
    ports:
      - "9906:3306"
  phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - '8080:80'
    restart: always
    environment:
      PMA_HOST: db
    depends_on:
      - db

对我来说,一切都很好,但是当我运行“docker compose up --build”时,容器启动了,但他没有像我在 Dockerfile 中请求的那样安装“mysqli”和“pdo_mysql”。

但是,如果我通过 CLI 登录到 PHP 容器,并且运行 docker-php-ext-install mysqlidocker-php-ext-install pdo_mysql,它就可以工作,我只需重新启动 PHP 容器即可.

但是,我不知道为什么,我无法从一开始就安装它?

感谢您的帮助。

P粉186017651P粉186017651237 天前445

全部回复(1)我来回复

  • P粉541551230

    P粉5415512302024-04-01 12:56:34

    感谢Lety的评论,我们只需要更改docker-compose.yml的第4行 作者:

    build: ./php

    (指示 Dockerfile 所在的目录)并且它可以工作。

    简历: 不要更改 Dockerfile . Change the docker-compose.yml 作者:

    version: '3.8'
    services:
      php-apache-environment:
        container_name: php-apache
        build: ./php
        volumes:
          - ./php/src:/var/www/html/
        ports:
          - 8000:80
    
      db:
        container_name: db
        image: mysql:latest
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
          MYSQL_DATABASE: MY_DATABASE
          MYSQL_USER: MYSQL_USER
          MYSQL_PASSWORD: MYSQL_PASSWORD
        ports:
          - "9906:3306"
      phpmyadmin:
        image: phpmyadmin:latest
        ports:
          - '8080:80'
        restart: always
        environment:
          PMA_HOST: db
        depends_on:
          - db

    回复
    0
  • 取消回复