1.生成MySQL容器
注:因为要将php链接到mysql,所以我们先生成mysql容器
为了方便快捷,并且只是学习使用,我们就使用官方的mysql镜像,首先将镜像源设置国内镜像源
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
systemctl restart docker
拉取官方mysql镜像
# 默认最新版本
docker pull mysql
创建mysql容器
# 1.创建mysql文件目录
cd /docker-study/mysql
# 2. 创建mysql容器
docker run \
--name mysql \
-p 3308:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v "$PWD"/data:/var/lib/mysql \
-v "$PWD"/docker_study/dockerdocker-lnmp/mysql/conf:/etc/mysql/conf.d \
-d mysql
- --name 容器名字
- -p 映射端口
- -e 变量
- -v 关在目录
- -d 守护进程
** docker ps **

2.生成php容器
cd /docker-study/php
# 1.拉取官方镜像
docker pull php:7.2-fpm
# 2.创建php容器
docker run -d \
--name php \
-p 9001:9000 \
-v "$PWD"/etc:/usr/local/etc/php \
-v "$PWD"/www/:/var/www/html:ro \
--link mysql \
php:7.2-fpm
3.生成nginx容器
cd /docker-study/nginx
# 1.拉取官方镜像
docker pull nginx
# 2.创建nginx容器
docker run -d \
--name nginx \
-p 8096:80 \
-v "$PWD"/www:/home/www/ \
-v "$PWD"/www:/usr/share/nginx/html \
-v "$PWD"/nginx.conf:/etc/nginx/nginx.conf \
-v "$PWD"/logs:/var/log/nginx \
-v "$PWD"/conf.d:/etc/nginx/conf.d \
--link php \
nginx
注:这里有个坑,nginx 启动挂载目录报错 docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused
因为这里自动将配置文件创建为目录了
** 解决方法 **
- 换一种方法不启动 -v "$PWD"/nginx.conf:/etc/nginx/nginx.conf \ 这个 启动之前先把刚刚已经启动的容器删除 docker rm -f nginx 然后记得删除掉/dcoker-study/nginx/nginx.conf这个目录
docker run -d \
--name nginx \
-p 8096:80 \
-v "$PWD"/www:/home/www/ \
-v "$PWD"/www:/usr/share/nginx/html \
-v "$PWD"/logs:/var/log/nginx \
--link php \
nginx
2.docker exec -it nginx /bin/bash (进入容器 获取文件) 3.cd /etc/nginx/ (这里主要获取配置文件路径的) 4.exit 5.然后进入cd /dcoker-study/nginx/ 里面,docker cp nginx:/etc/nginx/nginx.conf . 然后再次启动就好了 6.docker rm -f nginx,完后重新执行
docker run -d \
--name nginx \
-p 8096:80 \
-v "$PWD"/www:/home/www/ \
-v "$PWD"/www:/usr/share/nginx/html \
-v "$PWD"/nginx.conf:/etc/nginx/nginx.conf \
-v "$PWD"/logs:/var/log/nginx \
-v "$PWD"/conf.d:/etc/nginx/conf.d \
--link php \
nginx
没有报错,创建ngixn容器成功
4.配置nginx
vim /docker-study/nginx/nginx.conf
server {
#根据映射的端口确定
listen 80;
listen [::]:80;
server_name localhost;
root /docker-study/php/www/;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
#此处 $fastcgi_script_name之前必须为/var/www/html
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
5.在/docker-study/php/www下面新建index.php,写入内容
cd /docker-study/php/www
touch index.php
<?php
phpinfo();
6.访问:ip:8096/index.php
好了,使用docker快速搭建lnmp环境成功