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 mysqli 和 docker-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.
感谢Lety的评论,我们只需要更改docker-compose.yml的第4行 作者:
(指示 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