Docker版lnmp
Docker Hub:https://hub.docker.com/r/2233466866/lnmp
下载(Download)
XML/HTML代码
- # latest版本
- ## CentOS7 + Nginx + Node.js + MySQL + php-^7.4 + php5.6.40
- docker pull 2233466866/lnmp
- docker pull 2233466866/lnmp-win
- docker pull 2233466866/lnmp-mac
- # newest版本
- ## CentOS7 + Nginx + Node.js + MySQL + php-^8.1 + php-^7.4 + php5.6.40 + Redis
- docker pull 2233466866/lnmp:newest
- docker pull 2233466866/lnmp:newest-win
- docker pull 2233466866/lnmp:newest-mac
- # mini版本
- ## CentOS7 + Nginx + php-^7.4
- docker pull 2233466866/lnmp:mini
- docker pull 2233466866/lnmp:mini-win
- docker pull 2233466866/lnmp:mini-mac
XML/HTML代码
- # 配置文件路径(Config file path)
- # Nginx
- /usr/local/nginx/conf/nginx.conf
- # MySQL
- /etc/my.cnf
- # Redis
- /usr/local/redis/redis.conf
- # php-5
- /usr/local/php5/lib/php.ini
- /usr/local/php5/etc/php-fpm.conf
- # php-7
- /usr/local/php7/lib/php.ini
- /usr/local/php7/etc/php-fpm.conf
- /usr/local/php7/etc/php-fpm.d/www.conf
- # php-8
- /usr/local/php8/lib/php.ini
- /usr/local/php8/etc/php-fpm.conf
- /usr/local/php8/etc/php-fpm.d/www.conf
XML/HTML代码
- # 端口映射自行指定,容器名称自行指定为lnmp
- docker run -dit --privileged --name=lnmp 2233466866/lnmp
- # 高级用法(Advanced usage)
- docker run -dit \
- --privileged \
- -p 80:80 \
- -p 443:443 \
- -v /宿主机自定义目录/www:/www \
- -v /宿主机自定义目录/mysql:/data/mysql \
- --name=lnmp \
- 2233466866/lnmp
- # 如对配置文件比较熟悉,也可以通过宿主机挂载使用自定义的配置文件
XML/HTML代码
- # 容器名称与上一步保持一致
- docker exec -it [CONTAINER ID] /bin/bash
XML/HTML代码
- ps aux|grep nginx
- ps aux|grep mysql
- ps aux|grep php
- ps aux|grep redis
- # 或者(Or)
- systemctl status nginx
- systemctl status mysqld
- systemctl status php5
- systemctl status php7
- systemctl status php8
- systemctl status redis
XML/HTML代码
- # PHP5及使用composer
- php5 -v
- php5 /usr/local/php5/bin/composer
- # PHP7及使用composer
- php7 -v
- php7 /usr/local/php7/bin/composer
- # PHP8及使用composer
- php8 -v
- php8 /usr/local/php8/bin/composer
XML/HTML代码
- # PHP5
- ps aux|grep php
- kill PHP-FPM-PID
- systemctl stop php7
- systemctl disable php7
- systemctl stop php8
- systemctl disable php8
- systemctl start php5
- systemctl enable php5
- # PHP7
- ps aux|grep php
- kill PHP-FPM-PID
- systemctl stop php5
- systemctl disable php5
- systemctl stop php8
- systemctl disable php8
- systemctl start php7
- systemctl enable php7
- # PHP8
- ps aux|grep php
- kill PHP-FPM-PID
- systemctl stop php5
- systemctl disable php5
- systemctl stop php7
- systemctl disable php7
- systemctl start php8
- systemctl enable php8
快速切换
XML/HTML代码
- # 切换PHP5
- pvm 5
- # 切换PHP7
- pvm 7
- # 切换PHP8
- pvm 8
XML/HTML代码
- cat /var/log/mysqld.log|grep 'A temporary password'
- # 或
- password=`cat /var/log/mysqld.log|grep 'A temporary password'`;password=${password:91};echo $password
初始化(initialize)
XML/HTML代码
- 如你的mysql数据是全新的,那么你可以在^1.11 or ^1.11-nosql版本中,使用 mysql_init 脚本将数据库密码初始化为:ASDFqwer1234####,该脚本如无法正常运行,请通过上一步获取的初始密码,用mysql_secure_installation手动初始化mysql。
XML/HTML代码
- # 请保持清醒头脑,明确自己是在容器内还是在服务器本身执行命令,以及-v挂载对文件的影响,以免造成不可挽回的损失
XML/HTML代码
- # 默认已安装部分扩展在目录:/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/
- # 如果要启用指定扩展,则需要修改php.ini,加上
- extension=xxx.so
- # xxx为PHP扩展的文件名,然后重启php
- systemctl restart php7
XML/HTML代码
- # 各版本详细信息请参考
- https://github.com/2233466866/lnmp/wiki
其他版本的lnmp
Docker Hub:https://hub.docker.com/r/fbraz3/lnmp
下载与说明
XML/HTML代码
- # 版本说明
- ##Linux (Ubuntu 18.04 LTS), Nginx, MySQL and PHP-FPM
- Configure your mysql database access to host 127.0.0.1, username root, no password and to database app
- Your main application will be accessible on http://localhost/ and phpmyadmin on http://localhost/pma/
- docker pull fbraz3/lnmp:latest
- docker pull fbraz3/lnmp:5.6
- docker pull fbraz3/lnmp:7.0
- docker pull fbraz3/lnmp:7.1
- docker pull fbraz3/lnmp:7.2
- docker pull fbraz3/lnmp:7.3
- docker pull fbraz3/lnmp:7.4
- docker pull fbraz3/lnmp:8.0
- docker pull fbraz3/lnmp:8.1
- docker pull fbraz3/lnmp:8.2
XML/HTML代码
- docker run -dit \
- --privileged \
- -p 80:80 \
- -p 3306:3306 \
- -v ./www:/app/public/ \
- --name=lnmp \
- fbraz3/lnmp:5.6
实际使用:
XML/HTML代码
- docker run -dit --privileged -p 80:80 -p 3306:3306 -v /opt/lnmp/www:/app/public/ --restart=always --name=lnmp fbraz3/lnmp:5.6
http://ip 直接访问 http://ip/pma/ 访问phpMyAdmin 默认root 密码是空。
如果想建立一个名字是 itv 的数据库,可以给 itv 数据库映射出来做数据持久化。
XML/HTML代码
- docker run -dit --privileged -p 80:80 -p 3306:3306 -v /opt/lnmp/www:/app/public/ -v /opt/lnmp/mysql:/var/lib/mysql/itv --restart=always --name=lnmp fbraz3/lnmp:5.6
修改数据库映射目录权限:
XML/HTML代码
- chmod -R 777 /opt/lnmp/mysql
注:可以在容器中直接命令修改root用户密码更加快捷
XML/HTML代码
- docker exec -it lnmp bash
- mysql -uroot -e "set password for 'root'@'%'=password('123456'); flush privileges; ";
修改phpMyAdmin认证方式
XML/HTML代码
- docker exec -it lnmp bash
- vi /var/www/html/pma/config.inc.php
直接修改root密码,就可以和之前一样免密登录。
XML/HTML代码
- $cfg[‘Servers’][$i][‘user’] = ‘root’; // 填写 MySQL 访问 phpMyAdmin 使用的 MySQL 用户名,默认为root。
- fg[‘Servers’][$i][‘password’] = ”; // 填写对应上述 MySQL 用户名的密码。
修改认证方法实现需要账号密码登录。
XML/HTML代码
- $cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
在此有四种模式可供选择,cookie,http,HTTP,config
config 方式即输入 phpMyAdmin 的访问网址即可直接进入,无需输入用户名和密码,是不安全的,不推荐使用。
当该项设置为 cookie,http 或 HTTP 时,登录 phpMyAdmin 需要数据用户名和密码进行验证,具体如下:
PHP 安装模式为 Apache,可以使用 http 和 cookie;PHP 安装模式为 CGI,可以使用 cookie。
注意:最新版本镜像从 Ubuntu 18.04 升级到 Ubuntu 22.04 ,默认数据库从mysql变成了mariadb,但是镜像中 docker-entrypoint.sh 中最后启动数据库命令 /etc/init.d/mysql restart 应该修改成 /etc/init.d/mariadb restart 。修改后就可以自动启动数据库了,期待作者新版本修复这个bug。作者已修复mysql数据库不启动的bug,已经可以用上面命令直接创建docker了。
几个常见的php环境的mysql在线管理程序:
phpMyAdmin
功能最强大,体积也大,用的最多的mysql管理程序。
Adminer
单文件轻量级的mysql管理程序,非常好用。
Amysql
易用安全高效的MySQL管理客户端,ahm出品。