用docker快速建立開發環境 (php7.1 + mysql + apache)

Chih Hong, Chen
Hong’s Technical Blogs
4 min readSep 10, 2017

以下範例的程式碼都在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就行了。

結果會像這樣:

連接成功!

--

--