色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

docker php pdo

劉柏宏1年前9瀏覽0評論
在現代開發中,很多項目都會用到數據庫訪問。而PHP作為一種流行的服務器端語言,其PDO擴展可以方便地操作數據庫。然而,在多臺不同的服務器上運行同一個項目時,如何保證各自環境的一致性,成為了一個問題。這時,Docker就可以發揮其優秀的特性。在這篇文章中,我們將介紹如何在Docker中使用PHP PDO。 首先,我們需要創建一個Docker鏡像,其中包含了必要的PHP和PDO擴展。在這里,我們以一個簡單的例子為例,創建一個名為“pdo-demo”的文件夾,并在其中創建兩個文件:Dockerfile和index.php: Dockerfile: ```dockerfile FROM php:7.1.3-apache RUN apt-get update && \ apt-get install -y libpq-dev && \ docker-php-ext-install pdo pdo_mysql pdo_pgsql ``` index.php: ```phpgetMessage(); } ``` 在Dockerfile中,我們以php:7.1.3-apache為基礎鏡像,安裝了libpq-dev和pdo、pdo_mysql、pdo_pgsql擴展。在index.php中,我們簡單地使用PDO連接本地的MySQL服務。 然后,我們可以使用以下命令創建并運行Docker鏡像: ```bash docker build . -t pdo-demo && \ docker run -p 80:80 --network bridge --name pdo-demo pdo-demo ``` 在瀏覽器中訪問http://localhost/,如果一切正常,你將會看到“Connection succeeded!”字樣。同時,在Docker logs中,你也可以看到如下的日志信息: ```bash mysqltest | [Fri May 29 06:51:41.386986 2020] [php7:notice] [pid 1] Connection succeeded! ``` 這代表著,我們成功地在Docker中使用了PHP PDO。 當然,在實際項目中,我們需要通過環境變量配置數據庫連接信息。這時,我們可以使用Docker Compose來管理多個容器的啟動過程。下面是一個包含Web服務器、應用服務器和數據庫服務器的docker-compose.yml文件: ```yml version: '3' services: web: build: . ports: - '80:80' depends_on: - app app: build: context: . dockerfile: Dockerfile-app environment: DB_NAME: pdo_demo DB_USER: root DB_PASS: root depends_on: - db db: image: mariadb environment: MYSQL_DATABASE: pdo_demo MYSQL_USER: root MYSQL_PASSWORD: root MYSQL_ROOT_PASSWORD: root ``` 我們在其中定義了三個服務:Web服務器、應用服務器和數據庫服務器。在PHP應用服務器的Dockerfile中,我們可以設置好必要的PHP和PDO擴展,以及安裝配置文件: ```dockerfile FROM php:7.1.3-fpm RUN apt-get update && \ apt-get install -y libpq-dev && \ docker-php-ext-install pdo pdo_mysql pdo_pgsql COPY php.ini /usr/local/etc/php/ ``` 在應用服務器的entrypoint.sh中,我們可以使用環境變量連接數據庫: ```bash #!/bin/bash set -e # Connect to database host=$DB_HOST port=${DB_PORT:-3306} dbname=$DB_NAME username=$DB_USER password=$DB_PASS echo "Waiting for database to start ..." until mysqladmin ping -h"$host" -P"$port" --silent; do sleep 1 done echo "Granting database user permissions ..." mysql -h"$host" -P"$port" -u"root" -p"$MYSQL_ROOT_PASSWORD"<< EOF GRANT SELECT, INSERT, UPDATE, DELETE ON $dbname.* TO $username@"%" IDENTIFIED BY "$password"; FLUSH PRIVILEGES; EOF echo "Database is ready! Starting PHP-FPM ..." php-fpm exec "$@" ``` 這樣,我們就可以使用Docker Compose啟動整個項目: ```bash docker-compose up -d ``` 無論我們在哪一臺服務器上啟動這個應用,都可以與其他服務器上啟動的應用保持一致,而無需擔心環境的差異。同時,我們還可以通過Docker Compose方便地管理多個服務。 綜上,使用PHP PDO在Docker中連接數據庫可以幫助我們方便地管理多臺服務器上的開發環境。通過環境變量和Docker Compose,我們還可以輕松地在不同的服務器上啟動同一個應用,而無需擔心環境的差異。