Dockerfile 方式定制 lnmp 环境
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,现在容器化技术越来越成熟和流行,比传统的虚拟化技术确实是有很大的优势,所以流行是必然的。今天来实践一把,使用Docker的dockerfile方式定制lnmp环境。环境配置操作系统:CentOS Li
千家信息网最后更新 2025年12月03日Dockerfile 方式定制 lnmp 环境
现在容器化技术越来越成熟和流行,比传统的虚拟化技术确实是有很大的优势,所以流行是必然的。今天来实践一把,使用Docker的dockerfile方式定制lnmp环境。
环境配置
操作系统:CentOS Linux release 7.6.1810Docker 版本:19.03.5Nginx 版本:1.15.5PHP 版本:7.2.26MySQL 版本:8.0.18Redis 版本:5.0.5 创建目录结构
docker目录://docker相关配置[root@zhangdeTalk data]# tree dockerdocker├── bin│ └── docker-compose-linux.yml //dockerfile.yml├── config│ ├── mysql│ │ └── mysqld.cnf //数据库配置文件│ ├── nginx│ │ ├── conf.d│ │ │ └── default.conf //nginx主要配置文件│ │ └── nginx.conf //nginx基础配置文件│ ├── php│ │ ├── php.ini //php基础配置文件│ │ └── www.conf //php主要配置文件│ └── redis│ └── redis.conf //redis配置文件├── dockerfile│ ├── mysql-8.0.18│ │ └── Dockerfile //mysql的dockerfile│ ├── nginx-1.15.5│ │ └── Dockerfile //nginx的dockerfile│ ├── php-7.2-fpm│ │ └── Dockerfile //php的dockerfile│ └── redis-5.0.5│ └── Dockerfile //redis的dockerfile├── README.en.md└── README.mdwww目录://站点目录[root@zhangdeTalk data]# tree wwwwww└── zhangdetalk_blog_admin├── 1.html└── index.phplogs目录://日志目录[root@zhangdeTalk data]# tree logslogs├── mysql├── nginx│ ├── access.log│ └── error.log├── php└── redismysql目录://数据库数据目录redis目录://数据库数据目录Docker安装
先在CentOS安装Docker,可参考另外一篇文章:CentOS安装Docker
构建lnmp镜像Dockerfile
PHP Dockerfile
From php:7.2-fpm#维护者信息MAINTAINER zhangdeTalk 2393222021@qq.com#时区ENV TZ Asia/ShanghaiRUN date -R#RUN docker-php-ext-install bcmath dom fileinfo filter ftp gd gmp hash iconv imap json mbstring mysqli odbc opcache pdo pdo_mysql pdo_odbc phar reflection session snmp soap sockets zip#RUN docker-php-ext-install mysqli opcache pdo_mysqlWORKDIR /workingRUN apt-get update --fix-missing && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include --with-jpeg-dir=/usr/include/jpeg \ && docker-php-ext-install gd mysqli opcache pdo_mysql gd zipENV PHPREDIS_VERSION 4.0.1ENV PHPXDEBUG_VERSION 2.6.0ENV PHPSWOOLE_VERSION 4.2.13ENV PHPMONGODB_VERSION 1.5.3RUN pecl install redis-$PHPREDIS_VERSION \ && pecl install xdebug-$PHPXDEBUG_VERSION \ && pecl install swoole-$PHPSWOOLE_VERSION \ && pecl install mongodb-$PHPMONGODB_VERSION \ && docker-php-ext-enable redis xdebug swoole mongodb# install composer new# https://getcomposer.org/installer | https://install.phpcomposer.com/installer RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ && php composer-setup.php \ && php -r "unlink('composer-setup.php');" \ && mv composer.phar /usr/local/bin/composer \ && composer config -g repo.packagist composer https://packagist.laravel-china.orgRUN apt-get install -y git# clearRUN rm -rf /var/cache/apt/* \ && rm -rf /var/lib/apt/lists/*RUN mkdir /var/lib/sessions \ && chmod o=rwx -R /var/lib/sessions#容器启动时执行指令CMD ["php-fpm"]Nginx Dockerfile
From nginx:1.15.5#维护者信息MAINTAINER zhangdeTalk 2393222021@qq.com#时区ENV TZ Asia/ShanghaiRUN date -R#容器启动时执行指令CMD ["nginx", "-g", "daemon off;"]Mysql Dockerfile
From mysql:8.0.18#维护者信息MAINTAINER zhangdeTalk 2393222021@qq.com#时区ENV TZ Asia/ShanghaiRUN date -R#容器启动时执行指令CMD ["mysqld"]Redis Dockerfile
From redis:5.0.5#维护者信息MAINTAINER zhangdeTalk 2393222021@qq.com#时区ENV TZ Asia/ShanghaiRUN date -R#容器启动时执行指令CMD ["redis-server"]dockerfile.yml配置
version: '3.3'services: nginx: build: ../dockerfile/nginx-1.15.5 ports: - "80:80" #nginx restart: always tty: true container_name: nginx volumes: - /data/www:/var/www/html - /data/logs/nginx:/var/log/nginx - /data/docker/config/nginx/conf.d:/etc/nginx/conf.d - /data/docker/config/nginx/nginx.conf:/etc/nginx/nginx.conf - /etc/letsencrypt:/etc/letsencrypt networks: - lnmp-networks php7: build: ../dockerfile/php-7.2-fpm tty: true restart: always container_name: php7 volumes: - /data/www:/var/www/html - /data/logs/php:/var/log/php - /data/docker/config/php/php.ini:/usr/local/etc/php/php.ini - /data/docker/config/php/www.conf:/usr/local/etc/php-fpm.d/www.conf depends_on: - nginx networks: - lnmp-networks redis: build: ../dockerfile/redis-5.0.5 container_name: redis tty: true restart: always volumes: - /data/docker/config/redis/redis.conf:/etc/redis/redis.conf - /data/redis:/var/lib/redis - /data/logs/redis:/var/log/redis networks: - lnmp-networks mysql: build: ../dockerfile/mysql-8.0.18 container_name: mysql tty: true restart: always ports: - "3306:3306" #mysql volumes: - /data/mysql:/var/lib/mysql - /data/docker/config/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf - /data/logs/mysql:/var/log/mysql - /data/mysqlback:/data/mysqlback environment: MYSQL_ROOT_PASSWORD: root networks: - lnmp-networksnetworks: lnmp-networks:Nginx配置文件
vim /data/docker/config/nginx/conf.d/default.confserver { listen 80; listen [::]:80; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html index.php; charset utf-8; server_name zhangdetalk.com www.zhangdetalk.com; location ~ \.md$ { default_type 'text/plain'; } root /var/www/html/zhangdetalk_blog_admin;//项目目录 location / { #try_files $uri $uri/ =404; index index.php index.htm index.html; if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } location ~ \.php$ { include fastcgi_params; fastcgi_index index.php; fastcgi_pass php7:9000;//容器:端口号 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }docker-compose安装
1. curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose2. chmod +x /usr/local/bin/docker-compose //设置可执行权限创建并启动容器
docker-compose -f docker-compose-linux.yml up -d --force-recreate --remove-orphans容器查看
docker ps
测试
vim /data/www/zhangdetalk_blog_admin/index.php通过访问站点:http://www.zhangdetalk.com/可以看到显示数据库连接成功,并打印出PHP的相关信息到此步,我们的lnmp环境搭建大功告成!github源码
相关的源码下载地址:https://github.com/zhangdejian/docker_lnmp.git遇到的问题
1、PHP代码连接数据库,host不能写成127.0.0.1或localhost,需要填写数据库容器名字2、mysql8连接,连接失败,因为加密方式有变化解决方式:主机登录mysql,修改成旧的加密方式(mysql_native_password),并重置密码 * mysql -uroot -p;* use mysql;* select host,user,plugin from user;* alter user 'root'@'%' identified with mysql_native_password by '123456';可参考这篇文章:Docker 安装 MySQL8.0
目录
配置
容器
数据
文件
数据库
信息
版本
方式
指令
时区
维护者
环境
基础
技术
源码
站点
篇文章
加密
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库用什么表示实体模型
惠普dsp1200服务器电源
数据库服务器组
机架式服务器维修上门收费
成都软件开发哪家便宜
软件开发数学建模论文
ns内地服务器
上海忱云网络技术有限公司
绿色全光网络技术联盟会
成都网络安全大会时间
陕西超频服务器厂家现货
重庆长按软件开发地址
舌诊数据库
钉钉邮箱如何在服务器改密码
云通慧联上海网络技术有限公司
新华三浪潮服务器
idea连接数据库格式
移动集客网络技术支撑竞聘报告
大数据的服务器都是共享带宽
贵州网络技术服务案例
广西学习软件开发排行榜
数据库的安全性总结
软件开发计算机资源
外文数据库学科教学
聚焦网络安全和信息化主业
计算机数据库图书
网络安全充电器
软件开发原型图
在机子上怎么看服务器型号
网络安全主题幼儿绘画