我正在為在 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 mysqli
和docker-php-ext-install pdo_mysql
,它就可以工作,我只需重新啟動PHP 容器即可.
但是,我不知道為什麼,我無法從一開始就安裝它?
感謝您的幫忙。
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