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

[[email protected] ~]# 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
[[email protected] ~]# docker inspect --format ‘{{ .NetworkSettings.IPAddress }}‘ 2e78c466919e
172.17.0.3
[[email protected] ~]#

首先创建目录和文件

[[email protected] ~]# mkdir phpMyAdmin_dockerfile && cd phpMyAdmin_dockerfile
[[email protected] phpMyAdmin_dockerfile]# ls
config.inc.php  Dockerfile  httpd_init.sh  phptest.php  run.sh

编辑Dockerfile文件

内容如下。具体每行的意思已经添加到注释中了

[[email protected] phpMyAdmin_dockerfile]# cat Dockerfile 

##使用的基础镜像
FROM centos:7.4.1708

#添加作者信息
MAINTAINER liuxin [email protected]

#工作目录
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

[[email protected] 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测试界面

[[email protected] phpMyAdmin_dockerfile]# cat phptest.php
< ?php
phpinfo();
?>

启动脚本

[[email protected] phpMyAdmin_dockerfile]# cat run.sh
#!/bin/sh

httpd
while true;do sleep 1000;done

创建镜像

[[email protected] 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
[[email protected] phpMyAdmin_dockerfile]#

创建并启动容器

映射,物理机端口8080到容器的80端口

[[email protected] phpMyAdmin_dockerfile]# docker run -d -p 8080:80 liuxin/centos-phpmyadmin:v1 /root/run.sh
a5a54528879ea95e9bf98a7ba3fbf6236b26f3a54a5305738a4ee770164f105b
[[email protected] 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
[[email protected] phpMyAdmin_dockerfile]#

验证

打开web浏览器,输入测试的网页

输入phpmyadmin的地址,并输入账号密码,看能否登录

登录成功,大功告成

原文地址:https://www.cnblogs.com/linuxprobe-sarah/p/11105018.html

时间: 2024-07-30 00:27:29

Docker容器里部署Apache+PHP+MariaDB+phpMyAdmin的相关文章

在Docker容器中部署Web应用

本文直接讲解如何在Docker容器中实战部署一个Web应用程序,关于Docker相关的概念和如何安装Docker请参考相关资料完成. 第一步:工具准备 演示如何在Docker容器中部署一个Java Web应用程序,需要准备的软件工具包括:jre,tomcat和webapp应用.另外,为了实现在容器启动时自动启动webapp,需要编写一个脚本工具完成该工作. 安装jre,请参考:http://www.wikihow.com/Install-Java-on-Linux 安装tomcat,请参考:ht

docker容器里设置中文时区

本文讨论docker容器里中文时区的问题,总所周知docker hub上的镜像默认都是英文时区的,在国人使用过程当中需要将时区设置成中文,我原来光配置/etc/localtime了date显示的时间也对,但是tomcat日志里输出的时间还是按默认时区,经过google一番,得知还需要设置timezone.以下描述一下Dockerfile的配置 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&

Docker容器里时间与宿主机不同步

docker容器里时间设置: 第一种: Dockerfile文件中添加一行:RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime或者 第二种: 进入到容器中,设置环境变量  export TZ=Asia/Shanghai 文件字符编码设置: 设置环境变量: export $LANG=en_US.UTF-8

Docker容器Tomcat部署war包

原文:Docker容器Tomcat部署war包 在docker容器中使用tomcat部署war包主要包括四个步骤,创建tomcat容器.上传war包到容器.重启容器.访问应用. 1.创建tomcat容器 使用docker run  -d --name cmdtomcat -p 8080:8080  tomcat命令启动了tomcat容器,在浏览器输入http://localhost:8080/可以显示tomcat配置页面.使用docker ps -a可以看到cmdtomcat的容器. 使用doc

Docker容器里的进程为什么要前台运行

<第一本Docker书>里面,讲到Docker容器启动web服务时,都指定了前台运行的参数,例如apache: [plain] view plain copy ENTRYPOINT [ "/usr/sbin/apache2" ] CMD ["-D", "FOREGROUND"] 又例如nginx: [plain] view plain copy ENTRYPOINT [ "/usr/sbin/nginx", &qu

docker容器-快速部署Jenkins

1.在本地虚拟机环境.安装CentOS 7,并安装docker容器 2.在docker容器中执行  docker pull jenkinsci/blueocean 3.查看已经下载的Jenkins镜像 docker images 4.创建jenkins_home 启动一个 Jenkins容器 创建一个jenkins目录 mkdir /home/jenkins_home 启动一个jenkins容器 docker run --name jenkins -p 8081:8080 -p 50000:50

Docker学习笔记(4-3)Docker容器内部署静态网站

设置容器的端口映射 如何访问容器的80端口<--设置端口映射 -P 为所有端口映射 -p 指定映射端口 docker run -p 80 -i -t ubuntu /bin/bash docker run -p 8080:80 -i -t ubuntu /bin/bash docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash #创建映射80端口的交互

在Docker容器中部署静态网页的方法教程

步骤:1.创建映射端口的交互式容器docker run -p 80 --name web -i -t daocloud.io/ubuntu /bin/bash2.安装Nginxapt-get install -y nginx 3.安装文本编辑器vimapt-get install -y vim4.创建静态页面 mkdir -p /var/www/html cd /var/www/html vim index.html 使用i切换到插入模式 在index.html中写入以下内容: <html>

docker容器composer 部署 laravel框架

首先yum install docker     安装docker service docker start   启动docker docker pull  docker.io/skiychan/nginx-php  下载这个镜像 docker images  查看镜像 然后创建容器 docker run --name "wzj" -p 8086:80 -p 9100:9100 -p 9101:9101 -p 9102:9102 -p 9103:9103 -it --privilege