Docker容器裡部署Apache+PHP+MariaDB+phpMyAdmin
前面講到了建立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瀏覽器,輸入測試的網頁
輸入phpmyadmin的地址,並輸入賬號密碼,看能否登入
登入成功,大功告成
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2649047/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 1.06 docker Compose多容器部署Docker
- Docker容器化部署Python應用DockerPython
- 使用Portainer部署Docker容器實踐AIDocker
- Docker容器與虛擬化技術:OpenEuler 部署 docker容器應用Docker
- 把 Windows 裝進 Docker 容器裡WindowsDocker
- .NET Core容器化之多容器應用部署(Docker-Compose)Docker
- 3568F-Docker容器部署方法說明Docker
- Docker的安裝與容器應用部署Docker
- Docker容器化部署嘗試——多容器通訊(node + mongoDB + nginx)DockerMongoDBNginx
- 使用Docker容器化部署實踐之Django應用部署(一)DockerDjango
- Docker容器中部署Django的時區問題DockerDjango
- RORedis快速部署為Docker容器的實現方法zmhRedisDocker
- SpringCloudAlibaba微服務docker容器打包和部署示例實戰SpringGCCloud微服務Docker
- 雲伺服器:如何在docker容器中部署應用伺服器Docker
- 資料庫為何不建議部署在Docker容器內資料庫Docker
- Docker容器Docker
- Docker如何高效部署Node應用?看這裡Docker
- docker 容器互通Docker
- Docker 容器操作Docker
- 容器引擎-DockerDocker
- 操作Docker容器Docker
- Taiga容器部署AI
- Docker容器無法啟動,裡面的配置檔案如何修改Docker
- 【Docker】使用docker部署 mysqlDockerMySql
- Docker 容器編排利器 Docker ComposeDocker
- Docker 容器基本操作[Docker 系列-2]Docker
- docker 容器操作、應用部署、mysql,redis,nginx、遷移與備份、DockerfileDockerMySqlRedisNginx
- 為什麼不建議把資料庫部署在docker容器內?資料庫Docker
- BI系統打包Docker映象及容器化部署的具體實現Docker
- 容器Docker詳解Docker
- Docker容器的搭建Docker
- 3、docker容器操作Docker
- 5、docker容器清理Docker
- docker進入容器Docker
- Docker的容器管理Docker
- Docker 容器學習Docker
- Docker 入門:容器Docker
- 初識Docker容器Docker