對于web應(yīng)用開發(fā),php和mysql是兩個(gè)非常重要的技術(shù),而容器技術(shù)則為應(yīng)用的部署和管理提供了更加便捷和靈活的方式
以php為例,我們可以使用Docker創(chuàng)建一個(gè)php容器,然后在容器中運(yùn)行我們的php應(yīng)用,在這個(gè)過程中可以使用docker-compose來管理我們的容器
version: '3' services: app: build: . image: php-docker-app ports: - "80:80" volumes: - .:/var/www/html depends_on: - db db: image: mysql environment: MYSQL_ROOT_PASSWORD: example
在上面的docker-compose.yml文件中,我們創(chuàng)建了兩個(gè)服務(wù),"app"和"db",其中"app"服務(wù)是用于運(yùn)行我們的php應(yīng)用的,而"db"服務(wù)則是用于運(yùn)行我們的mysql數(shù)據(jù)庫的。通過"Dockerfile"文件來構(gòu)建"app"服務(wù)所需要的鏡像,并將應(yīng)用代碼從宿主機(jī)共享到容器中
FROM php:7.2-apache COPY . /var/www/html/
而在我們的應(yīng)用中,我們可以使用以下代碼進(jìn)行數(shù)據(jù)庫連接
$servername = "db"; $username = "root"; $password = "example"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully";
可以看出,在我們的php應(yīng)用中,我們僅需將"db"作為數(shù)據(jù)庫的主機(jī)名,就可以直接訪問我們運(yùn)行在另一個(gè)容器中的mysql數(shù)據(jù)庫了
通過使用php和mysql容器,我們可以極大地簡化部署和維護(hù)的難度,通過docker-compose管理多個(gè)容器之間的依賴關(guān)系,實(shí)現(xiàn)應(yīng)用的快速和可靠形