使用 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
分享
二维码
海报
使用 Docker 部署 LNMP 环境
前言 nginx php 容器镜像使用我官方镜像根据我需求修改过的 mysql 使用官方镜像 没有安装 docker 服务,参考我的 docker 安装 一、构建容器 1.1 构建 php 容……
<<上一篇
下一篇>>
文章目录
关闭
目 录