IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> docker制作centos7.9+apache2.4+php7.4镜像 -> 正文阅读

[PHP知识库]docker制作centos7.9+apache2.4+php7.4镜像

基本介绍

1、版本一致性

我们经常会遇到这样的问题,那就是我们编写的PHP应用进行部署的时候,因为运行环境的不一致导致很不稳定,要么是受系统版本影响,那么受apache影响,再就是Php的版本不一致,其实用docker可以很好地解决这个问题,因为在docker的官方镜像中,centos的版本是一致的,我们这里使用centos7来作为基本运行环境。
我这里已经手工制作了一个镜像,需要使用的可以pull

docker pull lzyats/php-apache:php7

2、应用层的安全

很多人会想,我可以自己部署为什么要使用docker呢?其实我们可以换一个思路,docker是一个隔离的容器,它可以使用一个应用所有的功能,但是它本身又是隔离起来的,这样如果有人想入侵这个应用层的话,其实他最后攻破的,只是一个隔离容器,这样我们的系统安全就有了一定的保障。

下载官方镜像

首先我们下载centos7的官方镜像

docker pull centos:7

这里我们需要注意的是,官方的镜像是不支持中文的,所以我们首先要设置中文支持,Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大,我们通常以 && 符号连接命令,这样执行后,只会创建 1 层镜像。
具体的Dockerfile脚本内容是

# 版本信息
FROM docker.io/centos:7
MAINTAINER lzyats "lzyats@qq.com"
#设置系统编码
RUN   ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& sed -i '13'd /etc/yum.conf \
&& yum install -y kde-l10n-Chinese glibc-common \
&& echo -e 'export LANG="zh_CN.UTF-8"\nexport LC_ALL="zh_CN.UTF-8"' > /etc/locale.conf \
&& source /etc/locale.conf
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
CMD ["/usr/sbin/init"]

将以上内容保存为Dockerfile文件,注意是没有后缀名的,进入该文件目录以后输入命令构建

docker build -t centos7:v1 .

这样一个简单的带中文支持的 docker镜像就做好了,我们可以自己启动镜像并测试一下中文显示

docker run -it --name centos7 centos7:v1 /bin/bash

输入时间查看命令,可以看到已经支持中文显示了

[root@ff28e36da29b /]# date
2021年 07月 27日 星期二 11:03:49 CST

安装apache+php7.4

centos自带的PHP是5.6的版本,所以其实我们是需要处理一下的
上面讲Dockerfile 的指令每执行一次都会在 docker 上新建一层,所以我们直接从头开始吧

# 版本信息
FROM docker.io/centos:7
MAINTAINER lzyats "lzyats@qq.com"
#设置系统编码
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& sed -i '13'd /etc/yum.conf \
&& yum install -y kde-l10n-Chinese glibc-common \
&& echo -e 'export LANG="zh_CN.UTF-8"\nexport LC_ALL="zh_CN.UTF-8"' > /etc/locale.conf \
&& source /etc/locale.conf
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
#安装apache+php
RUN yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-utils \
&& yum-config-manager --enable remi-php74 \
&& yum install -y yum -y install php php-cli php-common php-fpm php-mysql php-cgi \
php-mbstring php-gd php-process php-mcrypt php-soap libjpeg* php-pear php-xml \
php-devel php-memcached php-redis php-gearman php-pecl-mongodb php-pecl-zip \
&& systemctl enable php-fpm \
&& systemctl enable httpd
CMD ["/usr/sbin/init"]

需要注意的是,由于我们在系统中设定了启用服务的权限,所以在启动的时候我们必须要加上相应的参数

docker run -d -p 8090:80 -v /www:/var/www/html  --name centos7 --privileged=true centos7:v1 /usr/sbin/init

我们在这里加载了一个目录www,主要是为了进行PHP信息的测试,我们用浏览器打开本机的8090端口
在这里插入图片描述
可以看到系统正常运行了,apache也自动启动了,我们在当前www目录下设置一个t.php进行测试
vi www/t.php

<?php phpinfo();

再访问运行一下看

在这里插入图片描述
还有一种方案,是自己直接运行一个centos7的镜像

docker run -it --name centos7 centos:7 /bin/bash

然后在里面设置好,再将镜像打包,相关的运行代码是

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& sed -i '13'd /etc/yum.conf \
&& yum install -y kde-l10n-Chinese glibc-common \
&& echo -e 'export LANG="zh_CN.UTF-8"\nexport LC_ALL="zh_CN.UTF-8"' > /etc/locale.conf \
&& source /etc/locale.conf \
&& yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-utils\
&& yum-config-manager --enable remi-php74 \
&& yum -y install php php-cli php-common php-fpm  \
php-mysql php-cgi php-mbstring php-gd php-process \
php-mcrypt php-soap libjpeg* php-pear php-xml \
php-devel php-redis php-gearman php-pecl-mongodb php-pecl-zip \
&& systemctl enable php-fpm \
&& systemctl enable httpd

其他设置

由于上面使用的都是默认设置,而有的人会有比较特别的要求,比如PHP上传的设置默认是2M,上传文件数等,可以自己修改php.ini文件,这个文件在/etc/php.ini
date.timezone = Asia/Shanghai
upload_max_filesize = 20M
全部配置好以后,使用命令将应用打包为镜像

docker commit --author "lzyats <lzyats@qq.com>" centos7 apache-php:php7

然后将镜像推送到自己的应用之中

推送镜像

docker tag php-apache:php7 lzyats/php-apache:php7
docker push lzyats/php-apache:php7

成功以后,你就可以随时拉取使用这个公共镜像了

docker pull lzyats/php-apache:php7

部署镜像

docker run -d -p 8090:80 -p 443:443  -v /www/:/var/www/html  -v /www/httpd.conf:/etc/httpd/conf/httpd.conf  --name centos7 --privileged=true lzyats/php-apache:php7 /usr/sbin/init
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:27:14  更:2021-07-28 07:29:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:41:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码