使用 Docker 部署 LNMP 环境
前言
- nginx php 容器镜像使用我官方镜像根据我需求修改过的
- mysql 使用官方镜像
- 没有安装 docker 服务,参考我的 docker 安装
一、构建容器
1.1 构建 php 容器
- 需要看构建代码到码云上面看因为毕竟复杂
# 克隆仓库到本地并进入目录
git clone https://gitee.com/G-Akiraka/DockerFile-PHP.git && cd DockerFile-PHP
# 构建 php 容器
docker build -f PHP-7.2-fpm.yaml -t myphp:7.2-fpm .
1.2 构建 nginx 容器
- 需要看构建代码到码云上面看因为毕竟复杂
# 克隆仓库到本地克隆仓库到本地并进入目录
git clone https://gitee.com/G-Akiraka/DockerFile-Nginx.git && cd DockerFile-Nginx
# 构建 nginx 容器
docker build -f nginx_1.17.8-alpine.yml -t mynginx:1.17.8 .
二、创建持久化目录
2.1 创建 compose 配置目录
mkdir -p /data/compose
2.2 创建 mysql 数据持久化目录
mkdir -p /data/mysql
2.3 创建 nginx 数据持久化目录
# 存放 sll 证书
mkdir -p /data/nginx/ssl
# nginx 配置文件
mkdir -p /data/nginx/conf.d
# nginx 项目路径
mkdir -p /data/nginx/wwwroot
# nginx 日志路径
mkdir -p /data/nginx/wwwlogs
三、docker-compose 文件配置
3.1 创建 docker-compose
- 新建一个文件名称问 docker-compose.yml
- 拷贝代码并复制
vim /data/compose/docker-compose.yml
# 复制以下代码并粘贴
version: '2'
services:
nginx:
image: mynginx:1.17.8
container_name: nginx
restart: always
mem_limit: 128m
volumes:
- /data/nginx/ssl:/etc/nginx/ssl
- /data/nginx/wwwroot:/data/wwwroot
- /data/nginx/wwwlogs:/data/wwwlogs
- /data/nginx/conf.d:/etc/nginx/conf.d
ports:
- "80:80"
- "443:443"
links:
- php
php:
image: myphp:7.4-fpm
container_name: php
restart: always
volumes:
- /data/nginx/wwwroot:/data/wwwroot
ports:
- "9000:9000"
mysql-server:
image: mysql:5.6
container_name: mysql
restart: always
mem_limit: 512m
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_USER: 'root'
MYSQL_PASS: 'password'
volumes:
- /data/mysql/data:/var/lib/mysql
- /data/mysql/conf/my.cnf:/etc/my.cnf
ports:
- "3306:3306"
四、启动容器
4.1 启动 docker compose
# 进入 compose 目录
cd /data/compose
# 启动容器
docker-compose up -d
4.2 docker compose 相关命令
# 停止相关容器
docker compose stop
# 删除停止 Compose 容器
docker compose rm
# 重启相关 Compose 容器
docker compose restart
# 列出 Compose 各个容器
docker compose ps
五、创建网站
- 默认可以通过 ip 地址访问到 nginx ,如果不能访问请关闭防火墙和设置安全组
5.1 创建一个新网站
- 这个用来检测 nginx 访问 php 容器是否正常
# 进入 nginx 项目目录
cd /data/nginx/wwwroot
# 创建测试文件夹
mkdir test.akiraka.net
# 创建 php 文件
vim test.akiraka.net/index.php
# 拷贝文件内容
<?php
phpinfo();
?>
5.2 创建一个 nginx 虚拟配置文件
- 域名解析到服务器上来,比如解析了一个 test.akiraka.net
# 进入 nginx 虚拟目录
cd /data/nginx/conf.d
# 创建一个 nginx 文件
vim test.akiraka.net
# 内容如下
server {
listen 80;
server_name test.akiraka.net;
index index.html index.htm index.php;
root $webroot;
# 这里的目录会和宿主机不同,因为是容器里的目录。
set $webroot '/data/wwwroot/test.akiraka.net';
location ~ [^/]\.php(/|$) {
include fastcgi.conf;
fastcgi_index index.php;
fastcgi_pass php:9000;
#fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $webroot$fastcgi_script_name;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
5.3 加载 nginx 配置
- 配置加载成功,就可以通过域名访问网站了
docker exec -it nginx nginx -s reload
六、容器操作
6.1 容器操作教程
- 例子 nginx 容器
# 重启容器
docker restart nginx
# 停止容器
docker stop nginx
# 启动容器
docker start nginx
# 进入容器交互操作,退出容器输入exit
docker exec -it nginx
# 查看容器运行状态
docker stats
# 查看正在运行的容器
docker ps
版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/250.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
使用 Docker 部署 LNMP 环境
前言
nginx php 容器镜像使用我官方镜像根据我需求修改过的
mysql 使用官方镜像
没有安装 docker 服务,参考我的 docker 安装
一、构建容器
1.1 构建 php 容……
文章目录
关闭