Rumah  >  Soal Jawab  >  teks badan

Imej Docker: Integrasi PHP 8.0, Apache dan phpMyAdmin

Saya sedang mencipta imej untuk projek php8 yang dijalankan pada apache dan menggunakan phpMyAdmin, fail Docker saya adalah seperti berikut:

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 saya adalah seperti berikut:

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

Bagi saya, semuanya baik-baik saja, tetapi apabila saya menjalankan "docker compose up --build", bekas itu bermula tetapi dia tidak memasang "mysqli" dan "pdo_mysql" seperti yang saya minta dalam Dockerfile.

Tetapi jika saya log masuk ke dalam bekas PHP melalui CLI dan menjalankan docker-php-ext-install mysqlidocker-php-ext-install pdo_mysql ia berfungsi dan saya hanya memulakan semula bekas PHP.

Tapi, tak tahu kenapa, dari awal tak boleh install?

Terima kasih atas bantuan anda.

P粉186017651P粉186017651183 hari yang lalu329

membalas semua(1)saya akan balas

  • P粉541551230

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

    Terima kasih kepada komen Lety, kami hanya perlu menukar baris 4 docker-compose.yml Pengarang:

    build: ./php

    (menunjukkan direktori di mana Dockerfile terletak) dan ia berfungsi.

    Sambung semula: Jangan tukar Dockerfile . Tukar docker-compose.yml Pengarang:

    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

    balas
    0
  • Batalbalas