以下範例的程式碼都在github上。
https://github.com/keepgoing147/docker-php7-apache-mysql
安裝好docker之後,新建一個資料: test,cd 到test,新增docker-compose.yml,並新增以下code:
這邊要注意yml編排格式。
接著,在同樣的資料夾新增一個Dockerfile,並新增以下code:
FROM php:7.1.9-apache
RUN apt-get update
RUN docker-php-ext-install pdo pdo_mysql
最後,新增src/your-project/index.php,index.php的內容打:
<?php
echo 'success execute in docker!';
這個時候,你的資料夾結構應該會長這樣:
執行完成之後,存取 http://localhost/your-project/ ,就會看見成果了:
也可以再your-project裡面新增這段code來測試mysql是不是也架好了:
osx上的話可以透過sequel pro去連接localhost:8887的db,去建立一個docker-table的database,再新增一個table為comments,去測試能否成功query就行了。
結果會像這樣:
連接成功!
https://github.com/keepgoing147/docker-php7-apache-mysql
安裝好docker之後,新建一個資料: test,cd 到test,新增docker-compose.yml,並新增以下code:
web:
build: .
links:
- db
ports:
- 80:80
volumes:
- ./www/html:/var/www/html
- ./src/your-project/:/var/www/html/your-project
db:
image: mysql:latest
restart: always
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootpassword
ports:
- 8887:3306
這邊要注意yml編排格式。
接著,在同樣的資料夾新增一個Dockerfile,並新增以下code:
FROM php:7.1.9-apache
RUN apt-get update
RUN docker-php-ext-install pdo pdo_mysql
最後,新增src/your-project/index.php,index.php的內容打:
<?php
echo 'success execute in docker!';
這個時候,你的資料夾結構應該會長這樣:
執行:docker-compose up -d
(-d是為了讓docker-compose命令在背景執行,不追蹤成功run起來之後的後續動作)
會出現開始build image的訊息
這次我們用了兩個image:php:7.1.9-apache, mysql:latest,所以會需要pull下來兩個image檔。
也可以再your-project裡面新增這段code來測試mysql是不是也架好了:
<?php try { $db = new PDO( 'mysql:host=db;dbname=docker-table;port=3306;charset=utf8', 'root', 'rootpassword' ); } catch (PDOException $e) { echo 'DB connection failed'; exit; } $data = $db->query('select * from comments'); $data = $data->fetchAll(); var_dump($data);
osx上的話可以透過sequel pro去連接localhost:8887的db,去建立一個docker-table的database,再新增一個table為comments,去測試能否成功query就行了。
結果會像這樣:
連接成功!