用docker快速建立開發環境 (php7.1 + mysql + apache)
以下範例的程式碼都在github上。
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-projectdb: 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檔。
執行完成之後,存取 http://localhost/your-project/ ,就會看見成果了:
也可以再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就行了。
結果會像這樣:
連接成功!