docker 搭建lnmp环境的方法步骤

 更新时间:2019年06月10日 11:08:46   作者:银哥  
这篇文章主要介绍了docker 搭建lnmp环境的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

创建项目目录

mkdir php

创建如下项目结构

  • sites 目录放置项目文件
  • services 目录放置服务相关配置
  • script 放置自定义脚本
├── Readme.md
├── docker-compose.yml
├── script
├── services
│ ├── mariadb
│ │ └── Dockerfile
│ ├── nginx
│ │ ├── Dockerfile
│ │ ├── conf.d
│ │ │ └── default.conf
│ │ └── nginx.conf
│ ├── php
│ │ └── Dockerfile
│ └── redis
│  └── Dockerfile
└── sites
 ├── index.html
 └── index.php

 
8 directories, 10 files

编辑docker-compose文件

version: "3"
services: 
 php:
 build: ./services/php
 # ports: 
 # - "9001:9000"
 container_name: lnmp-php
 restart: always
 volumes: 
  - ./sites:/www
 networks:
  lnmp_net:
  ipv4_address: 101.11.11.10

 nginx:
 build: ./services/nginx
 ports:
  - "81:80"
  - "444:443"
 container_name: lnmp-nginx
 restart: always
 volumes: 
  - ./sites:/www
  - ./services/nginx/nginx.conf:/etc/nginx/nginx.conf
  - ./services/nginx/conf.d:/etc/nginx/conf.d:rw
 networks:
  lnmp_net:
  ipv4_address: 101.11.11.11

networks:
 lnmp_net:
 driver: bridge
 ipam:
  config:
  - subnet: 101.11.11.0/20

编辑services/nginx文件

FROM nginx:1.17.0-alpine

# 更新安装源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# 设置时区为上海
RUN apk update && apk add --upgrade \
 && apk add tzdata \
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && echo "Asia/Shanghai" > /etc/timezone \
 && apk del tzdata

编辑services/php文件

FROM php:7.3.6-fpm-alpine3.9

# 更新安装源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# 设置时区为上海
RUN apk update && apk add --no-cache tzdata autoconf gcc g++ make zlib-dev curl-dev\
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && echo "Asia/Shanghai" > /etc/timezone \
 && apk del tzdata \
 && docker-php-ext-install mysqli pdo_mysql opcache \
 && pecl install grpc protobuf xdebug yaf yar swoole \
 && docker-php-ext-enable xdebug yaf yar swoole grpc protobuf 

以上我们的lnmp环境基本搭建完毕,下面我们针对Php解析做相关的配置

修改services/nginx/nginx.conf,可根据需求自行修改

user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid  /var/run/nginx.pid;


events {
 worker_connections 1024;
}


http {
 include  /etc/nginx/mime.types;
 default_type application/octet-stream;

 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';

 access_log /var/log/nginx/access.log main;

 sendfile  on;
 #tcp_nopush  on;

 keepalive_timeout 65;

 #gzip on;

 include /etc/nginx/conf.d/*.conf;
}

修改services/nginx/conf.d目录下文件

该目录是各个项目的配置文件,可根据需求配置单个或多个服务

server {
 listen  80;
 server_name localhost;

 #charset koi8-r;
 #access_log /var/log/nginx/host.access.log main;

  #root /usr/share/nginx/html;
 root /www;
 index index.php index.html index.htm;


 #error_page 404    /404.html;

 # redirect server error pages to the static page /50x.html
 #
 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
  root /usr/share/nginx/html;
 }

 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 #
 #location ~ \.php$ {
 # proxy_pass http://127.0.0.1;
 #}

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 #
 location ~ \.php$ {
 # root   html;
  fastcgi_pass 101.11.11.10:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include  fastcgi_params;
 }

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 #
 #location ~ /\.ht {
 # deny all;
 #}
}

启动服务

cd php && docker-compose up --build -d

上述的步骤根据网速的docker的配置执行时间个不相同,因为php中编译了些许扩展,也可根据自身需求做响应的删减
通过浏览器访问http://127.0.0.1:81,如果看到了phpinfo的输出信息,那么恭喜你,你的lnmp环境已经部署完成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • docker删除镜像的实现方式详解

    docker删除镜像的实现方式详解

    这篇文章主要为大家介绍了docker删除镜像的实现方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Vue.js中的watch属性详解

    Vue.js中的watch属性详解

    在Vue.js中,watch属性是一种非常重要的属性,它可以监听Vue实例中指定的数据变化,并在数据发生变化时执行相应的操作,本文将对 Vue.js中的watch属性进行详细的介绍,并附上相关的代码示例,需要的朋友可以参考下
    2023-06-06
  • Dockerfile中yum install无法使用的问题及解决

    Dockerfile中yum install无法使用的问题及解决

    在使用Dockerfile自定义CentOS 7容器过程中,可能会遇到容器内无法使用yum命令的问题,首先,确认主机是否能联网,其次,检查在Dockerfile打包新容器时,容器是否能联网,若发现容器无法联网,一种解决方法是编辑/etc/docker/daemon.json文件
    2024-11-11
  • docker run命令的使用小结

    docker run命令的使用小结

    本文主要介绍了docker run命令的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • 查找每个Docker镜像的层和层大小的两种方法

    查找每个Docker镜像的层和层大小的两种方法

    本文主要介绍了查找每个Docker镜像的层和层大小的两种方法,这对于识别可能导致镜像整体大小的大型层,以及确定哪些层可以被删除或优化以减少镜像的大小是非常有用的,感兴趣的可以了解一下
    2023-10-10
  • 基于Docker的几种常用CentOS7镜像小结

    基于Docker的几种常用CentOS7镜像小结

    本文主要介绍了使用 Docker 来制作CentOS 环境的镜像,并上传到阿里云的 Docker 镜像仓库,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • 基于docker搭建selenium分布式环境

    基于docker搭建selenium分布式环境

    这篇文章主要介绍了基于docker搭建selenium分布式环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Docker安装ELK并实现JSON格式日志分析的方法

    Docker安装ELK并实现JSON格式日志分析的方法

    这篇文章主要介绍了Docker安装ELK并实现JSON格式日志分析的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Docker 给运行中的容器设置端口映射的方法

    Docker 给运行中的容器设置端口映射的方法

    这篇文章主要介绍了Docker 给运行中的容器设置端口映射的方法,详细的介绍了端口映射的概念和方法,具体一定的参考价值,有兴趣的可以了解一下
    2017-11-11
  • CentOS7 Docker防火墙的简单配置教程

    CentOS7 Docker防火墙的简单配置教程

    这篇文章主要给大家介绍了关于CentOS7 Docker防火墙的简单配置方法,以及总结了docker在centos7下的一些坑,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-12-12

最新评论