Akiraka Akiraka
  • Home
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • Big Data
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • K8S
    • Kubernetes
    • Helm
  • Other
  • Quark
  • Contribute
  • Home
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • Big Data
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • K8S
    • Kubernetes
    • Helm
  • Other
  • Quark
  • Contribute
首页 Linux Docker 使用 Docker 部署 LNMP 环境

使用 Docker 部署 LNMP 环境

Akiraka 2年前

文章目录

  • 前言
  • 一、构建容器
    • 1.1 构建 php 容器
    • 1.2 构建 nginx 容器
  • 二、创建持久化目录
    • 2.1 创建 compose 配置目录
    • 2.2 创建 mysql 数据持久化目录
    • 2.3 创建 nginx 数据持久化目录
  • 三、docker-compose 文件配置
    • 3.1 创建 docker-compose
  • 四、启动容器
    • 4.1 启动 docker compose
    • 4.2 docker compose 相关命令
  • 五、创建网站
    • 5.1 创建一个新网站
    • 5.2 创建一个 nginx 虚拟配置文件
    • 5.3 加载 nginx 配置
  • 六、容器操作
    • 6.1 容器操作教程

前言

  • 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
#docker#linux#mysql#nginx#php#容器编排
2
猜你喜欢
  • Jenkins 升级失败
  • Dockerfile 构建 FreeRadis 镜像
  • KeyCloak Docker Compose 部署
  • KeyCloak 身份验证 Nginx 502网关错误
  • 密码保护:KeyCloak 结合 Gitlab SSO 一键登录认证
Akiraka
站长
本人擅长 Ai、Au、Fl、Ae、Pr、Ps 等软件的安装与卸载,精通 CSS、JavaScript、PHP、Python、Shell、Go 等单词的拼写,熟悉 Windows、Linux、Mac、Android、IOS 等系统的开关机!
160
文章
24
评论
73
获赞
Popular Articles
TOP1
Kubernetes(k8s)Helm 部署 EFK 集群
2年前
TOP2
Kubernetes(k8s)helm 搭建 prometheus + Grafana 监控
2年前
TOP3
Container 命令ctr、crictl 命令使用说明
11月前
TOP4
Kubernetes(k8s)Helm 部署 Jenkins 持续化集成部署
2年前
TOP5
Helm 部署 Loki 日志聚合
2年前
Related Articles
Docker 导入导出和重命名与新容器
2年前
Kubernetes(k8s)部署 Helm 客户端
2年前
vim 开启关闭自动缩进
2年前
ELK 容器配置
2年前
RabbitMQ 非官方镜像搭建
2年前
Copyright © 2019-2022 Akiraka. 沪18036911号