使用docker-compose搭建lnmpr环境

这篇具有很好参考价值的文章主要介绍了使用docker-compose搭建lnmpr环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

源码gitee

compose 使用的三个步骤:

• 使用 Dockerfile 定义应用程序的环境。
• 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
• 最后,执行 docker-compose up -d 命令来启动并运行整个应用程序。

下面先展示如下存在的目录及文件结构

使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

docker-compose.yml 文件内容

version: "1.0"
services:
  redis:
     image: redis5.0.12:v1
     container_name: lnmp_redis
     build:
      context: ./redis
      dockerfile: Dockerfile
     volumes:
      - ./redis/conf:/etc/redis
      - ./redis/logs:/usr/local/redis/logs
      - ./redis/data:/usr/local/redis/data
     environment:
      - TZ=Asia/Shanghai
     ports:
      - "6379:7379"
     networks:
      - backend
  php: 
    image: php8:v1
    container_name: lnmp_php8
    build: 
     context: ./php
     dockerfile: Dockerfile
    depends_on:
     - "redis"
     - "mysql"
    volumes:
     - ./php/project:/data/wwwroot/project
     - ./php/logs:/usr/local/php/logs
    environment:
     - TZ=Asia/Shanghai
    ports:
     - "9000:9000"
    networks:
     - frontend
     - backend
  nginx:
    image: nginx1.22:v1
    container_name: lnmp_nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    depends_on:
      - "php"
    volumes:
      - ./nginx/html:/data/wwwroot/html
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "80:80"
      - "443:443"
    networks:
      - frontend
  mysql: 
    image: mysql8.0.32:v1
    container_name: lnmp_mysql
    build:
      context: ./mysql
      dockerfile: Dockerfile
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "3306:3306"
    networks:
      - backend  
networks:
  frontend:
  backend:

nginx中Dockerfile文件内容

# 拉取 CentOS
FROM centos:7.8.2003

# 作者信息
MAINTAINER "LuNan"


# 下载相关依赖
RUN yum update -y \
  && yum install -y vim git wget gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop 

# 创建用户
RUN useradd www


# 设置 nginx 版本
ENV NGINX_VERSION 1.22.0

# 下载安装及编译
RUN wget http://nginx.org/download/nginx-1.22.0.tar.gz \
  && tar -zxf nginx-$NGINX_VERSION.tar.gz \
     && cd nginx-$NGINX_VERSION \
     && ./configure  --prefix=/usr/local/nginx  --with-http_sub_module --with-http_ssl_module && make && make install
     


# 配置

RUN mkdir -p /data/wwwroot/html

COPY ./conf/nginx.conf /usr/local/nginx/conf/nginx.conf

COPY ./html/index.html /data/wwwroot/html


# 声明要把容器的哪些端口映射到宿主机
EXPOSE 80 433


COPY run.sh /etc/run.sh
RUN chmod +x /etc/run.sh

ENTRYPOINT ["/etc/run.sh"]

nginx中nginx.conf 配置文件变更

user  www;  
worker_processes  auto;

location / {
    root   /data/wwwroot/html;
    index  index.html index.htm;
}

location ~ \.php$ {
    fastcgi_pass   lnmp_php8:9000; # lnmp_php8指的是php容器名称
    fastcgi_index  index.php; 
    # /data/wwwroot/project/  为php容器中的项目目录,可以看一下php中的Dockerfile文件
    fastcgi_param  SCRIPT_FILENAME  /data/wwwroot/project/$fastcgi_script_name;
    include        fastcgi_params;
}

nginx中run.sh文件内容

#!/bin/bash

/usr/local/nginx/sbin/nginx -g "daemon off;" 

tail -f /dev/null

nginx中html目录下的index.html文件内容

<!DOCTYPE html>
<html>
<head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
</head>
<body>
    ceshi
    nginx镜像测试文件
</body>
</html>

php中Dockerfile文件内容

# 拉取 CentOS
FROM centos:7.8.2003
# 作者信息
MAINTAINER "LuNan"

    
# 下载相关依赖
RUN yum update -y \
   && yum install -y vim git wget gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop \
   libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel libcurl-devel 


RUN yum install -y libwebp-devel 

RUN yum install -y http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm \
  http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm 

# 保证nginx 和php 用户相同
RUN groupadd www && useradd -g www www


# 设置 php 版本
ENV PHP_VERSION 8.2.8

#下载及编译
RUN  cd /opt \
     && wget https://www.php.net/distributions/php-$PHP_VERSION.tar.gz --no-check-certificate \
     && tar -zxf php-$PHP_VERSION.tar.gz \
     && cd php-$PHP_VERSION \
     && ./configure  --prefix=/usr/local/php \
     --with-config-file-path=/usr/local/php/etc \
     --with-openssl \
     --enable-fpm \
     --enable-gd \
     --with-curl \
     --with-zlib \
     --with-jpeg \
     --with-webp=/usr/local/include/webp  \
     --with-freetype=/usr/local/freetype \
     --without-sqlite3 \
     --without-pdo-sqlite \
     --disable-rpath \
     --enable-mbstring \
     --enable-mysqlnd \
     --with-mysqli \
     --with-pdo-mysql \
     --with-fpm-user=www \
     --with-fpm-group=www \
   && make && make install
     


# 执行shell命令
RUN cp /opt/php-$PHP_VERSION/php.ini-development /usr/local/php/etc/php.ini \
   && cp  /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \
   && cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf \
   && sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf \
   && sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.d/www.conf \ 
   && mkdir -p /data/wwwroot/project   


COPY ./project/index.php /data/wwwroot/project/
COPY ./project/mysql.php /data/wwwroot/project/


EXPOSE 9000
COPY run.sh /etc/run.sh
RUN chmod +x /etc/run.sh

# 启动
ENTRYPOINT ["/etc/run.sh"]

# redis 扩展版本
ENV REDIS_PECL_VERSION 5.3.7
# 新增redis扩展
RUN cd /opt \ 
    && wget  https://pecl.php.net/get/redis-$REDIS_PECL_VERSION.tgz \
    && tar -zxvf redis-$REDIS_PECL_VERSION.tgz \ 
    && cd  redis-$REDIS_PECL_VERSION \
    && /usr/local/php/bin/phpize \
    && ./configure -with-php-config=/usr/local/php/bin/php-config \
    && make && make install \
    && sed -i "90a \extension=redis.so" /usr/local/php/etc/php.ini

php中project目录下的index.php 文件内容

<?php
echo "ce";
echo "ceshi";
echo phpinfo();

php中run.sh 文件内容

#!/bin/bash

/usr/local/php/sbin/php-fpm 

tail -f /dev/null

redis中Dockerfile文件内容

# 拉取 CentOS
FROM centos:7.8.2003

# 维护者
MAINTAINER lunan

# 设置 Redis 版本
ENV REDIS_VERSION 5.0.12

# 下载依赖
RUN yum update -y \
  && yum install -y vim wget gcc gcc-c++ make perl tar 

# 下载包和编译
RUN  cd /opt \
  && wget http://download.redis.io/releases/redis-$REDIS_VERSION.tar.gz \
  && tar -zxf redis-$REDIS_VERSION.tar.gz \
  && cd redis-$REDIS_VERSION \
  && make && make PREFIX=/usr/local/redis install

# 相关配置
RUN  cd /opt/redis-$REDIS_VERSION \
  && mkdir -p /usr/local/redis/{logs,data} \ 
  && mkdir -p /etc/redis && chmod -R 755 /etc/redis 
  #&& chmod +x redis.conf \
  #&& mv redis.conf /etc/redis/redis.conf \
  #&& sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis/redis.conf \
  #&& sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf 
# 复制本地文件到容器中
COPY ./conf/redis.conf /etc/redis/redis.conf

# 设置端口
EXPOSE 6379

# 脚本运行
COPY run.sh /etc/run.sh
RUN chmod +x /etc/run.sh
ENTRYPOINT ["/etc/run.sh"]

redis中conf目录下的redis.conf变更

bind 0.0.0.0
daemonize yes

redis中run.sh文件内容

#!/bin/bash

/usr/local/redis/bin/redis-server /etc/redis/redis.conf > /usr/local/redis/logs/redis.log


tail -f /dev/null

执行docker-compose 命令

docker-compose up -d

使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

检查各个进程状态

使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

访问各个相关页面

  1. nginx默认页面
    使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

  2. php默认页面
    使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

  3. php redis扩展信息
    使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

mysql 相关配置

mysql未配置之前页面,出现的错误:
使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

首先配置mysql相关授权:
进入mysql 容器: docker exec -it lnmp_mysql bash,密码在之前日志文件中/usr/local/mysql/error.log,进入到mysql 命令行中,执行如下操作:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; # 重新设置密码
create user 'lunan'@'%' identified by 'root' ; # 新增lunan用户
grant all privileges on *.* to lunan@'%'; # 授权
flush privileges; # 刷新

使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

需要更改php容器中,mysql.php 文件的相关信息:
使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维
需要注意的是$host 变量: 为mysql的ip ,可以通过如下命令查看:
使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维
然后再次访问mysql.php 文件:
使用docker-compose搭建lnmpr环境,Docker,docker,容器,运维

至此docker-compose 安装 lnmpr已完成!!!文章来源地址https://www.toymoban.com/news/detail-622495.html

到了这里,关于使用docker-compose搭建lnmpr环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Docker-Compose搭建Redis集群

    3主+3从 由于仅用于测试,故我这里只用1台服务器进行模拟 redis列表 在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis-5,redis-6文件夹 注意:port值不能都为6379,根据上面redis列表设

    2024年02月15日
    浏览(29)
  • 使用docker-compose搭建mysql主从

    目录 一、docker-compose和主从的简介 1、docker-compose 2、mysql主从 3、为什么要使用docke-compose? 二、部署mysql主从集群 1、mysql-master主库 2、mysql-slave从库 三、安装docker-compose 1、上传文件 2、添加可执行权限 3、创建并编辑docker-compose.yml文件 4、运行docker-composeysql.yml 四、配置mysql主

    2024年02月07日
    浏览(26)
  • minio文件服务器-docker docker-compose 搭建部署以及使用大全

    下载官网 简介 docker-compose 单机版安装 拉取镜像运行容器 docker-compose 搭建 minio 分布式对象存储 部署 官方推荐 docker-compose.yaml :下载地址 vim docker-compose.yml 接着创建 config目录 执行启动命令,看到各个节点 healthy 状态即成功 浏览器访问任意节点 web console ,进行简单配置,配

    2023年04月10日
    浏览(39)
  • 使用docker-compose 搭建mongo单节点与副本集

    注:确认已经已经关闭防火墙和selinux和已安装docker mkdir -p /data/mongodb vim /data/mongodb/mongo.yml vim /data/mongo/start_mongodb.sh 常用命令使用文档: https://www.runoob.com/mongodb/mongodb-tutorial.html vim /data/mongodb/mongodb.yml 2.2.1 登录容器 2.2.2 初始化集群 2.2.2.1添加配置文件 2.2.2.2初始化副本集mongo

    2024年01月22日
    浏览(43)
  • Docker-compose搭建xxl-job(并配置Python3环境xxl-job执行器)

    注意:a.文件内IP替换成自己本机IP; b.数据库连接、用户密码根据自己情况修改; 注意:根据自己Python脚本需要添加python3第三方包; 注意:xxl-job-executor-sample-springboot-2.2.0.jar 为xxl-job的执行器jar包 可从github上拉取源码打包成jar 这里提供该文件csdn下载地址:https://download.csdn.

    2024年02月14日
    浏览(30)
  • 【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

    参见使用Docker构建LNMP环境并运行Wordpress网站平台 Docker-Compose将所管理的容器分为三层,分别是 项目(project)、服务(service)以及容器(container) 。 Docker-Compose运行目录下的所有文件组成一个项目, 若无特殊指定项目名即为当前目录名 。 一个工程当中可包含多个服务,每个

    2024年02月15日
    浏览(38)
  • docker-compose搭建redis服务

    2024年02月14日
    浏览(32)
  • vue项目docker docker-compose 本地开发环境配置

    配置Docker Compose用于在本地开发Vue项目是一个方便且高效的方法。Docker Compose允许您定义和管理多个容器组成的应用程序。 一、配置Docker Compose文件,用于在本地开发Vue项目 docker-compose.yaml 二、配置 Dockerfile Dockerfile 三、在终端中进入Vue项目的根目录,然后运行以下命令来启动

    2024年02月15日
    浏览(35)
  • Docker-compose 启动 lnmp 开发环境

    GitHub传送阵 docker-lnmp 项目帮助开发者快速构建本地开发环境,包括Nginx、PHP、MySQL、Redis 服务镜像,支持配置文件和日志文件映射,不限操作系统; 此项目适合个人开发者本机部署,可以快速切换服务版本满足学习服务新版本的需求; 也适合团队中统一开发环境,设定好配置

    2024年02月01日
    浏览(33)
  • Docker与Docker-compose安装Vulfocus Vulhub漏洞环境

    一.docker 和 docker-compose 介绍:  docker: docker-compose: 二者的区别: 二者的联系: 二者的总结: 二.Centos 7安装Docker 三.Centos 7安装docker-compose 四.docker-compose搭建Vulhub漏洞测试靶场 五.基于docker-compose安装Vulfocus漏洞环境 六.基于Docker安装Vulfocus漏洞环境 七.总结:         d

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包