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

因为这里自动将配置文件创建为目录了

解决方法

  1. 换一种方法不启动 -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环境成功

发表评论

您的电子邮箱地址不会被公开。