标题docker-lnmp安装
获取 Mysql 5.7 镜像
docker pull mysql:5.7
启动容器 mysql
docker run -p 3306:3306 --name mysql -v /mydocker/mysql/conf:/etc/mysql/conf.d -v /mydocker/mysql/logs:/logs -v /mydocker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-e 设置环境变量,这里设置mysql的root用户的初始密码
-name 容器的名称、只要求唯一性
获取php 7.2镜像
docker pull php:7.2-fpm
启动php 容器
docker run -d -v /mydocker/www/html:/var/www/html -p 9000:9000 --link mysql:mysql --name cs_phpfpm php:7.2-fpm
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,主机上的/var/nginx/www/html映射到容器里面 的/var/www/html,如果主机没有这个目录就创建这个目录,或者映射别的目录,但是后面路径要统一
-name 容器的名字
-link 容器与另外一个容器建立联系,这样就可以在当前的容器去使用另一个容器里的服务
测试目录映射
在主机/var/nginx/www/html 目录下创建php测试页面,会直接映射到容器里面
[root@iZ2ze4wzoj9k9p12p1wemaZ mydocker]# cat /mydocker/www/html/index.php
<?
phpinfo();
?>
//看直接映射到了容器内部了
[root@iZ2ze4wzoj9k9p12p1wemaZ mydocker]# docker exec -it 92fc30be9a85 /bin/bash //进入到php的容器里面了
root@92fc30be9a85 :/var/www/html# ls
index.php
php的扩展安装
安装php-redis
oot@iZ2ze4wzoj9k9p12p1wemaZ mydocker]# docker exec -it 161e8febf93b /bin/bash
root@161e8febf93b:/var/www/html# cd /
root@161e8febf93b:/# pecl install redis && docker-php-ext-enable redis
downloading redis-5.3.2.tgz ...
Starting to download redis-5.3.2.tgz (266,814 bytes)
........................................................done: 266,814 bytes
29 source files, building
running: phpize
Configuring for:
PHP Api Version: 20170718
Zend Module Api No: 20170718
Zend Extension Api No: 320170718
enable igbinary serializer support? [no] : no
enable lzf compression support? [no] : no
enable zstd compression support? [no] : no
building in /tmp/pear/temp/pear-build-defaultuser4SG4R5/redis-5.3.2
running: /tmp/pear/temp/redis/configure --with-php-config=/usr/local/bin/php-config --enable-redis-igbinary=no --enable-redis-lzf=no --enable-redis-zstd=no
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
获取Nginx 1.12.2镜像
docker pull nginx:1.12.2
启动Nginx容器
ocker run -d -p 80:80 --name nginx -v /mydocker/www/html:/var/www/html --link cs_phpfpm:phpfpm --name nginx nginx:1.12.2
参数说明
-d 让容器运行在后台
-p 添加主机到容器的端口映射
-v 添加目录映射,这里最好nginx容器的根目录最好写成和php容器中根目录一样。但是不一定非要一样,如果不一样在配置nginx的时候需要注意
-name 容器的名称
-link 容器之间建立起来联系
修改Nginx 的配置文件,使他支持php ,方式有多种,这里我直接拷贝出配置文件修改在导进去即可
docker cp 235d69f70521:/etc/nginx/conf.d/default.conf /opt/
cat default.conf
server {
listen 80;
server_name localhost;
location / {
root /var/www/html;
index index.html index.htmi index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root html;
fastcgi_pass 161e8febf93b:9000; # php容器id
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
修改完毕导入配置文件到Nginx 容器里面
进入到容器里面重新加载配置文件
root@iZ2ze4wzoj9k9p12p1wemaZ mydocker]# docker exec -it 235d69f70521/bin/bash
root@235d69f70521:/# nginx -t Nginx检测配置文件是否正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@235d69f70521:/# nginx -s reload
2020/11/18 15:56:49 [notice] 24#24: signal process started
参数说明
-t 在容器里面生产一个伪终端
-i 对容器内的标准输入(STDIN)进行交互
查看所有容器映射的端口
访问