Docker Image: Integration von PHP 8.0, Apache und phpMyAdmin
P粉186017651
P粉186017651 2024-03-31 18:19:17
0
1
491

Ich erstelle ein Image für ein PHP8-Projekt, das auf Apache läuft und phpMyAdmin verwendet. Meine Docker-Datei lautet wie folgt:

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

Mein docker-compose.yml lautet wie folgt:

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

Bei mir war alles in Ordnung, aber als ich „docker compose up --build“ ausführte, startete der Container, aber er installierte „mysqli“ und „pdo_mysql“ nicht, wie ich es in der Docker-Datei gefordert hatte.

Aber wenn ich mich über die CLI beim PHP-Container anmelde und docker-php-ext-install mysqlidocker-php-ext-install pdo_mysql ausführe, funktioniert es und ich starte einfach den PHP-Container neu.

Aber ich weiß nicht warum, ich kann es nicht von Anfang an installieren?

Danke für deine Hilfe.

P粉186017651
P粉186017651

Antworte allen(1)
P粉541551230

感谢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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage