Dockerfile构建lamp镜像

1、构建目录

复制代码
[root@docker ~]# mkdir compose_lamp
[root@docker ~]# cd compose_lamp/

2、编写Docekerfile

复制代码
[root@docker compose_lamp]# vim Dockerfile
#基础镜像
FROM centos:7

#维护该镜像的用户信息
MAINTAINER Crushlinux <crushlinux@163.com>


#安装httpd
RUN yum -y install httpd

#安装mysql 和php

RUN rpm --rebuilddb && yum -y install mariadb-devel mariadb-server mariadb php php-fpm


#修改php-fpm 配置文件允许nginx 访问

#设置环境变量,便于管理
ENV MARIADB_USER root
ENV MARIADB_PASS 123456

#mysql 数据库授权
ADD db_init.sh /root/db_init.sh
RUN chmod 775 /root/db_init.sh
RUN /root/db_init.sh

#添加测试页面
ADD index.php /usr/share/httpd/html/index.php

#定义时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#分别开启80 端口,443 端口,9000 端口,3360 端口
EXPOSE 80
EXPOSE 9000
EXPOSE 3306

#复制脚本,设置权限,启动容器时启动该脚本
ADD run.sh /run.sh
RUN chmod 775 /run.sh
CMD ["/run.sh"]

3、编写 db_init.sh

复制代码
[root@docker compose_lamp]# vim db_init.sh
#!/bin/bash
/usr/bin/mysql_install_db --user=mysql
sleep 3
/usr/bin/mysqld_safe &
sleep 3
mysql -e "use mysql; grant all privileges on *.* to '$MARIADB_USER'@'%' identified by '$MARIADB_PASS' with grant option;"
h=$(hostname)
mysql -e "use mysql; update user set password=password('$MARIADB_PASS') where user='$MARIADB_USER' and host='$h';"
mysql -e "flush privileges;"

4、编写 index.php

复制代码
[root@docker compose_lamp]# vim index.php 

<?php
phpinfo();
?>

5、编写 default.conf

复制代码
[root@docker compose_lamp]# vim default.conf 

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/httpd/html;
        index  index.html index.php index.htm;
    }

    location ~ \.php$ {
        root           /usr/share/httpd/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/httpd/html$fastcgi_script_name;
        include        fastcgi_params;
    }
}

6、编写 run.sh

复制代码
[root@docker compose_lamp]# vim run.sh 

#!/bin/bash
/usr/sbin/httpd && /usr/sbin/php-fpm && /usr/bin/mysql_safe
~                                                                    

7、构建镜像

复制代码
[root@docker compose_lamp]# docker build -t lamp:new .
[root@docker compose_lamp]# docker images lamp:new
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lamp                new                 47a211277660        14 minutes ago      913 MB

8、测试容器

相关推荐
Alsn862 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
程序员老赵2 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏2 天前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主2 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang2 天前
Docker 使用完整指南
运维·docker·容器
正经教主2 天前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
CodeStats2 天前
【虚拟机】 从 CPU 指令到虚拟机隔离:虚拟机就是一个“模拟了完整硬件的普通进程”
java·docker
ai产品老杨2 天前
突破安防碎片化:基于 Docker 与边缘计算的 AI 视频智能化中台,如何通过 GB28181/RTSP 统一接入与全套源码交付实现二次开发自由?
人工智能·docker·边缘计算
正经教主2 天前
【docker基础】第十三周:学习总结与进阶方向【完结】
运维·docker·容器
“码”力全开2 天前
解耦异构设备:基于 Docker 与边缘计算的 GB28181/RTSP 统一流媒体平台架构演进(全源码交付)
docker·架构·边缘计算