Docker容器裡部署Apache+PHP+MariaDB+phpMyAdmin

安全劍客發表於2019-06-28
前面講到了建立MariaDB,這次在前面的基礎上搭建phpMyAdmin服務,以便友好的管理資料庫MariaDB。MariaDB的docker獨立出來,這樣方便管理,易於擴充套件。這次我們基於Dockerfile方式建立剩餘的服務,Dockerfile也是官方推薦的建立映象方法。
建立Apache+PHP+phpMyAdmin映象
首先啟動MariaDB的容器

在上一節中我們知道資料庫的使用者名稱是root,密碼是123456,但是我們還缺少資料庫的ip地址,我們使用如下方法獲取docker例項的ip地址,是172.17.0.3

[root@test01 ~]# docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS                     NAMES
2e78c466919e        liuxin/centos-mariadb:v1   "/root/run.sh"      11 hours ago        Up 3 hours          0.0.0.0:13306->3306/tcp   dreamy_bell
[root@test01 ~]# docker inspect --format '{{ .NetworkSettings.IPAddress }}' 2e78c466919e
172.17.0.3
[root@test01 ~]#
首先建立目錄和檔案
[root@test01 ~]# mkdir phpMyAdmin_dockerfile && cd phpMyAdmin_dockerfile
[root@test01 phpMyAdmin_dockerfile]# ls
config.inc.php  Dockerfile  httpd_init.sh  phptest.php  run.sh
編輯Dockerfile檔案

內容如下。具體每行的意思已經新增到註釋中了

[root@test01 phpMyAdmin_dockerfile]# cat Dockerfile 
##使用的基礎映象
FROM centos:7.4.1708
#新增作者資訊
MAINTAINER liuxin 842887233@qq.com
#工作目錄
WORKDIR /root/
#安裝httpd和php,並忽略錯誤
RUN yum -y install httpd
RUN yum -y install php
#安裝mariadb客戶端和php-mysqlnd
RUN yum -y install mariadb
RUN yum -y install php-mysqlnd
RUN yum -y install php-mbstring
#安裝phpmyadmin
RUN yum -y install epel-release
RUN yum -y install phpmyadmin
#設定環境變數,便於管理
ENV MARIADB_ADDR 172.17.0.3
ENV MARIADB_PORT 3306
ENV MARIADB_USER root
ENV MARIADB_PASS 123456
#讓容器支援中文
ENV LC_ALL en_US.UTF-8
#配置phpmyadmin
#ADD phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf
ADD config.inc.php /etc/phpMyAdmin/config.inc.php
RUN chown root:apache /etc/phpMyAdmin/config.inc.php
RUN chmod 640 /etc/phpMyAdmin/config.inc.php
#新增php測試介面
ADD phptest.php /var/www/html/phptest.php
#初始化httpd服務
ADD httpd_init.sh /root/httpd_init.sh
RUN chmod 775 /root/httpd_init.sh
RUN /root/httpd_init.sh
#匯出埠
EXPOSE 80
#新增啟動檔案
ADD run.sh /root/run.sh
RUN chmod 775 /root/run.sh
#設定預設啟動命令CMD ["/root/run.sh"]
配置phpmyadmin的配置檔案

這裡我直接將寫好的配置檔案上傳,然後修改檔案許可權。也可以通過 指令碼 來配置,不過比較麻煩,不如這個簡單。改動的配置如下

設定phpmyadmin的登入密碼

$cfg['blowfish_secret'] = '123456'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
設定連線資料庫的賬號、密碼、ip和埠
$cfg['Servers'][$i]['host']          = '172.17.0.3';    // MySQL hostname or IP address
$cfg['Servers'][$i]['port']          = '';              // MySQL port - leave blank for default port
$cfg['Servers'][$i]['user']          = 'root';          // MySQL user
$cfg['Servers'][$i]['password']      = '123456';      // MySQL password (only needed
使用 指令碼 配置httpd
[root@test01 phpMyAdmin_dockerfile]# cat httpd_init.sh 
#!/bin/sh
sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /etc/httpd/conf/httpd.conf
sed -i '/Require ip/d' /etc/httpd/conf.d/phpMyAdmin.conf
sed -i '//a Require all granted' /etc/httpd/conf.d/phpMyAdmin.conf
新增一個php測試介面
[root@test01 phpMyAdmin_dockerfile]# cat phptest.php 
< ?php
phpinfo();
?>
啟動指令碼
[root@test01 phpMyAdmin_dockerfile]# cat run.sh 
#!/bin/sh
httpd
while true;do sleep 1000;done
建立映象
[root@test01 phpMyAdmin_dockerfile]# docker build -t liuxin/centos-phpmyadmin:v1 ./
Sending build context to Docker daemon 14.34 kB
Step 1 : FROM centos:7.4.1708
 ---> 3afd47092a0e
.
.
省略...
.
.
Step 26 : CMD /root/run.sh
 ---> Using cache
 ---> 19e52b9aceab
Successfully built 19e52b9aceab
[root@test01 phpMyAdmin_dockerfile]#
建立並啟動容器

對映,物理機埠8080到容器的80埠

[root@test01 phpMyAdmin_dockerfile]# docker run -d -p 8080:80 liuxin/centos-phpmyadmin:v1 /root/run.sh
a5a54528879ea95e9bf98a7ba3fbf6236b26f3a54a5305738a4ee770164f105b
[root@test01 phpMyAdmin_dockerfile]# docker ps
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS                     NAMES
a5a54528879e        liuxin/centos-phpmyadmin:v1   "/root/run.sh"      56 seconds ago      Up 54 seconds       0.0.0.0:8080->80/tcp      sick_ride
2e78c466919e        liuxin/centos-mariadb:v1      "/root/run.sh"      12 hours ago        Up 4 hours          0.0.0.0:13306->3306/tcp   dreamy_bell
[root@test01 phpMyAdmin_dockerfile]#
驗證
開啟web瀏覽器,輸入測試的網頁

Docker容器裡部署Apache+PHP+MariaDB+phpMyAdminDocker容器裡部署Apache+PHP+MariaDB+phpMyAdmin

輸入phpmyadmin的地址,並輸入賬號密碼,看能否登入

Docker容器裡部署Apache+PHP+MariaDB+phpMyAdminDocker容器裡部署Apache+PHP+MariaDB+phpMyAdmin

登入成功,大功告成

Docker容器裡部署Apache+PHP+MariaDB+phpMyAdminDocker容器裡部署Apache+PHP+MariaDB+phpMyAdmin


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2649047/,如需轉載,請註明出處,否則將追究法律責任。

相關文章