0%

phpmyadmin in docker

phpmyadmin

phpmyadmin是一個廣為使用的 mysql 管理的介面。
我很小的時候就在使用這個工具了,今天就來說說使用的場景。
在我們的環境中有幾個設定是必須要注意的。

  • docker-compose
  • mysql
  • nginx

docker

我們布署的環境都是由docker所建立的。
在這裡面有幾個角色, 讓我們用 docker-compose 來完成。

  • phpmyadmin
  • mysql
  • nginx

下面是 docker-compose.yml 的內容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
version: '2'
services:
mysql:
image: mariadb
restart: always
hostname: mysql
container_name: mysql
environment:
- MYSQL_ROOT_PASSWORD=secret
volumes:
- /home/docker/data/db:/var/lib/mysql
ports:
- 3306:3306
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
hostname: phpmyadmin
restart: always
environment:
- MYSQL_ROOT_PASSWORD=secret
- PMA_HOST=mysql
- PMA_ABSOLUTE_URI=http://10.33.57.31/pma/
nginx:
image: nginx
restart: always
hostname: nginx
container_name: nginx
volumes:
- /home/docker/data/nginx/conf:/etc/nginx
ports:
- 80:80

default.conf 中加入下面的內容。

1
2
3
4
location /pma {
proxy_pass http://phpmyadmin/;
proxy_buffering off;
}

啟動所有 containers 。

1
$ docker-compose up -d

這樣就可以連上 phpmyadmin 了。
pma

docker-compose

我們定義了 PMA_ABSOLUTE_URI=http://10.33.57.31/pma/ 是為了 nginx 的 reverse proxy。

nginx

我們也加了 location /pma 的設定,指定到 proxy_pass http://phpmyadmin/
有了 nginx 和 docker-compose 的設定,就可以透過 nginx 對外的 80 或 443 把 phpmyadmin 對外。

結語

在這個實驗中,我們建立了三個 containers。
這些也是我們常常在使用的linux+mysql的環境。