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、测试容器

相关推荐
AOwhisky11 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm
念何架构之路17 小时前
Docker 容器状态机 学习
java·学习·docker
jieyucx17 小时前
Docker 入门第六阶段:综合实战项目
运维·docker·容器
不能只会打代码18 小时前
Day 002 — Python 工程化 & FastAPI & 数据库速通
数据库·redis·python·docker·fastapi·测试
海涛从不浪19 小时前
03 oect刷入Armbian后安装Onepanel并进行docker迁移
运维·docker·容器·onepanel
yanjieliyun21 小时前
家庭服务器从入门到精通 · 第 5 篇 · NPM反向代理从安装到起飞:一条命令搞定HTTPS
docker
天狼啸月19901 天前
RagSEDE复现: Docker and Ragflow 关系
docker·容器·ragflow·ragsede
java_logo1 天前
Docker 部署 SamWaf 完整教程:开源 Web 应用防火墙实测
docker·开源·防火墙·waf·samwaf·轩辕镜像·docker部署waf
C137的本贾尼1 天前
第十篇:Docker & K8s——标准化应用的“集装箱“和“码头调度中心“
docker·容器·kubernetes
增量星球1 天前
《持续交付2.0系列一》从技术交付到业务引领
java·docker·容器·devops