Akiraka Akiraka
  • 首页
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • 大数据
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • 微服务
    • Kubernetes
    • Helm
  • Other
  • Quark
  • 首页
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • 大数据
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • 微服务
    • Kubernetes
    • Helm
  • Other
  • Quark
首页 › Linux › Docker › 使用 Docker 部署 LNMP 环境

使用 Docker 部署 LNMP 环境

Akiraka1年前

文章目录

  • 前言
  • 一、构建容器
    • 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
分享
Akiraka 站长
文章 121评论 10
相关文章
  • Docker 修改默认存储路径
  • Centos/Ubuntu Linux 系统 根目录扩容方法
  • RocketMQ 集群容器多机编排主主
  • 搭建 Redis 主从搭建配置
  • Docker-Compose 网络配置
Akiraka
站长
本人擅长 Ai、Au、Fl、Ae、Pr、Ps 等软件的安装与卸载,精通 CSS、JavaScript、PHP、Python、Shell、Go 等单词的拼写,熟悉 Windows、Linux、Mac、Android、IOS 等系统的开关机!
121文章
10评论
47获赞
想找什么搜一下
文章聚合
Docker Compose 内网设置
1年前
Kubernetes(k8s)helm 部署 RabbitMq 集群
11月前
设置pyspark 启动时所使用的python版本
1年前
Centos/Ubuntu Linux 系统 根目录扩容方法
3月前
Docker 导入导出和重命名与新容器
1年前
微信小程序
微信小程序
标签云
brew cdh centos cmd docker docker compose elasticsearch elk filebase filebeat gitlab grafana hadoop helm hive hue jdk jenkins k8s kibana kubernetes liniux linux logstash mac mikrotik mydumper mysql nfs nginx openssl oss php pip pyspark python RabbitMQ redis rocketmq shell Spark ubuntu windows ZooKeeper 容器编排
Copyright © 2019-2021 Akiraka. Designed by nicetheme. 沪18036911号