GitHub star最多的 dnmp环境 安装

news2024/9/21 17:33:08

对于安装GitHub上start最多的dnmp环境的步骤及感悟

https://github.com/yeszao/dnmp/blob/master/README.md

  1. 在服务器上装docker与docker-compose

注意:安装docker-compose的时候选择官方版本安装(虽然慢但是请等等),我操作时出现过国内镜像地址安装但 执行docker-compose --version 安装不成功,又换成官方版本安装

  1. 安装git (推荐源码安装)
  2. /usr/local/目录下 git clone https://github.com/yeszao/dnmp.git
  3. 执行
 cd dnmp                                           # 进入项目目录
 cp env.sample .env                                # 复制环境变量文件
 cp docker-compose.sample.yml docker-compose.yml   # 复制 docker-compose 配置文件。默认启动3个服务:
                                                   # Nginx、PHP7和MySQL8。要开启更多其他服务,如Redis、
                                                    # PHP5.6、PHP5.4、MongoDB,ElasticSearch等,请删                                                   # 除服务块前的注释             

修改 docker-compose.yml 添加配置 安装portainer(docker容器可视化面板)

并且在/usr/local/dnmp/data/目录下新建portainer目录与portainer_chinese目录
portainer_chinese目录是为了汉化portainer的包,我安装的是2.16.2版本
在https://imnks.com/3406.html 网址下载汉化包并将其内容拷贝至portainer_chinese目录

 portainer:
    image: portainer/portainer:latest
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:cached
      - ${DATA_DIR}/portainer/:/data:cached
      - ${DATA_DIR}/portainer_chinese:/public
    cap_add:
      - SYS_PTRACE
    networks:
      - default

在此基础上我们还要添加supervisord的容器,但由于自带的supervisord的容器里没有PHP环境无法执行PHP命令,我们可以把以下内容添加至docker-compose.yml

  php-worker:
    build:
      context: ./services/php-worker
      args:
        PHP_VERSION: php:${PHP_VERSION}-alpine
        CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
        PHP_EXTENSIONS: ${PHP_EXTENSIONS}
        TZ: "$TZ"
    container_name: php-worker
    ports:
      - "${SUPERVISOR_HOST_PORT_C}:9001"
    volumes:
      - ${SOURCE_DIR}:/www/:rw
      - ${DATA_DIR}/composer:/tmp/composer
      - ${SUPERVISOR_LOG}:/var/log/supervisor/:rw
      - ${SUPERVISOR_CONFIG}:/etc/supervisor/conf.d/:rw
      - ${SUPERVISOR_CONF_FILE}:/etc/supervisor/supervisord.conf:ro
    command:
      - /bin/sh
      - -c
      - |
        supervisord -n -c /etc/supervisor/supervisord.conf
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - default

参考 https://www.chenqicheng.com/article/52 (第一行的docker-compser我给删掉了),并且在/usr/local/dnmp/services/目录下 新建 php-worker目录,将/usr/local/dnmp/services/php目录下的extensions
目录拷贝至php-worker目录,然后在php-worker目录下新建Dockerfile文件并将以下代码拷贝进去(以下代码与参考网址一致)

ARG PHP_VERSION
FROM ${PHP_VERSION}

ARG TZ
ARG PHP_EXTENSIONS
ARG CONTAINER_PACKAGE_URL


RUN if [ $CONTAINER_PACKAGE_URL ] ; then sed -i "s/dl-cdn.alpinelinux.org/${CONTAINER_PACKAGE_URL}/g" /etc/apk/repositories ; fi

#php容器内安装supervisor
RUN apk update \
        && apk upgrade \
        && apk add supervisor \
        && apk --no-cache add tzdata \
    && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
    && echo "$TZ" > /etc/timezone \
        && rm -rf /var/cache/apk/*


COPY ./extensions /tmp/extensions
WORKDIR /tmp/extensions
RUN chmod +x install.sh \
    && sh install.sh \
    && rm -rf /tmp/extensions

ADD ./extensions/install-php-extensions  /usr/local/bin/

RUN chmod uga+x /usr/local/bin/install-php-extensions

RUN apk --no-cache add tzdata \
    && cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
    && echo "$TZ" > /etc/timezone


# Fix: https://github.com/docker-library/php/issues/240
RUN apk add gnu-libiconv libstdc++ --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/edge/community/ --allow-untrusted
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php


# Install composer and change it's cache home
RUN curl -o /usr/bin/composer https://mirrors.aliyun.com/composer/composer.phar \
    && chmod +x /usr/bin/composer
ENV COMPOSER_HOME=/tmp/composer

# php image's www-data user uid & gid are 82, change them to 1000 (primary user)
RUN apk --no-cache add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data


WORKDIR /www

至此,执行 docker-compose up -d 启动

Portainer面板使用
1.阿里云服务器安全组打开9000端口
2.主机IP:9000在浏览器访问 并设置账号密码(账号密码要记住)
3.进入Portainer面板(完成汉化的)
在这里插入图片描述
如果需要使用composer建议进入容器内部使用
在这里插入图片描述
安装扩展建议
在这里插入图片描述

文章参考网址 :
Portainer汉化
supervisord+php容器创建

完结,撒花~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flex弹性布局的基本操作知识

今天为大家阐述如何在开发APP或网站的时候,制定一套弹性布局,相互之间兼容,那么我们就可以用Flex来实现: 什么是flex?:Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵…

Ubuntu 上使用nginx部署vue项目(403/(98: Address already in use))

准备好前端dist文件 保证dist/index.html 点击在本地可以访问, 一,nginx安装 第一步,更新源列表 apt-get update 第二步,安装nginx apt-get install nginx 第三步,检查nginx是否安装成功。如果出现版本号说明安…

直播预告:重保常见攻击场景及解决方案

重保在即,针对邮件系统的网络攻击、主机威胁、账号失陷等攻击场景,该如何应对? 4月25日(周二)15:00-16:30 Coremail举行重保常见攻击场景及解决方案直播交流会 在这里,您将看到&…

itop-3568 开发板系统编程学习笔记(19)GPIO 应用编程

【北京迅为】嵌入式学习之Linux系统编程篇 https://www.bilibili.com/video/BV1zV411e7Cy/ 个人学习笔记 文章目录 使用 sysfs 方式操作 GPIOGPIO 应用编程 使用 sysfs 方式操作 GPIO 和上一篇笔记 LED 应用编程一样,GPIO 也可以通过 sysfs 方式来控制。 在串口终…

Elasticsearch:使用 Elastic APM 监控 Android 应用程序(一)

作者:Alexander Wert, Cesar Munoz 人们通过私人和专业的移动应用程序在智能手机上处理越来越多的事情。 拥有成千上万甚至数百万的用户,确保出色的性能和可靠性是移动应用程序和相关后端服务的提供商和运营商面临的主要挑战。 了解移动应用程序的行为、…

【计算机视觉】必须了解的图像数据底层技术

计算机视觉的主要目的是让计算机能像人类一样甚至比人类更好地看见和识别世界。计算机视觉通常使用C、Python和MATLAB等编程语言,是增强现实(AR)的一项重要技术。 文章目录 一、引言二、什么是计算机视觉(Computer Vision&#xf…

Flink窗口函数

1.什么是窗口函数 Flink窗口函数是指对数据流中的数据进行分组和聚合操作的函数。 FlinkSQL支持对一个特定的窗口的聚合。例如有用户想统计在过去的1分钟内有多少用户点击了某个的网页。在这种情况下,我们可以定义一个窗口,用来收集最近一分钟内的数据…

codemirror 5前端代码编辑器资料整理。

CodeMirror 是基于js的源代码编辑器组件,它支持javascript等多种高级语言,tampermonkey内置的代码编辑器就是基于它。它的按键组合方式兼容vim,emacs等,调用者还可自定义”自动完成“的列表窗口,自由度极高&#xff0c…

Android studio 按钮状态列表

1.创建一个drawable&#xff0c;类型selector 。 <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><!--被按下状态 --><item android:state_pressed"…

信息安全复习三:古典密码之设计好的密码算法

一.章节梗概 讨论以下算法&#xff0c;理解怎么设计好的密码算法的关键问题 1.Caesar cipher 2.单字母表密码 3.Playfairmima 4.维吉尼亚密码 5.自动生成密码 二.Caesar cipher 2.1 穷举攻击 穷举攻击定义&#xff1a;尝试所有密钥直到有一个合法密钥能够把密文还原成明文&…

软考软件设计师 操作系统笔记

操作系统地位 程序顺序执行&#xff08;进程管理&#xff09; 程序顺序执行的特征&#xff0c;顺序性封闭性可再现性 前趋图 P1结束后 V操作 SS1 P2操作前先执行S S -1 此时S0 一个箭头对应一个信号量 程序并发执行和前驱图 找到输入i计算c输出p&#xff0c;如果找不到就…

结合实战,浅析GB/T28181(十)——媒体流保活

1 问题现象 在实际项目对接过程中&#xff0c;我们有时会碰到这样的问题&#xff1a;视频正在播放着&#xff0c;突然停止了。然后ping一下&#xff0c;也能ping通&#xff01;下级平台或上级平台看起来也在线&#xff0c;看起来不是网络的问题。这到底咋回事呢&#xff1f;一…

实验室电磁铁EM4S的技术参数

锦正茂科技自主研发的电磁铁&#xff0c;可以通过更换电磁铁极头在一定范围内改善磁场的大小和磁场的均匀度 &#xff0c;并且可以通过调整极头间距改变磁场的大小&#xff0c;该种类型的电磁铁能够很好的与客户设计的磁场平台兼容。主要用于磁滞现象研究、磁化系数测量、霍尔效…

公派访问学者签证申请需提交的材料

公派访问学者签证申请需提交的材料: 1、《公派留学人员基本情况表》。 2、留学基金委出具的《同意派出函》复印件一份(特殊项目除外)。 3、录取文件复印件一份。(如您是改派国别、延期派出、缩短在外留学期限等&#xff0c;还要提交留学基金委出具的相关文件复印件一份)。 4…

dtype = torch.float32到底有什么用

dtype torch.float32到底有什么用 解决&#xff1a;RuntimeError: expected scalar type Long but found Float 先看一个例子 要计算 z x0 w1x1 w2x2 其中w [-0.2,0.15,0.15] 于是你开始尝试 其中torch.mv用于矩阵*向量 此时你发现他需要你提供float格式的数据 你查看发…

(一)MYSQL实战——用户权限控制管理

前言 mysql作为目前最流行的关系型数据库&#xff0c;被广泛使用在各种系统服务中&#xff0c;本节内容主要是关于mysql数据库在生产环境中用户、权限等相关内容的设置说明&#xff0c;便于我们更好的使用和管理我们的数据库。 正文 SQL的分类 ①数据查询语言&#xff08;Da…

SpringBoot日志

日志有什么用&#xff1f; 日志最主要的用途就是排查和定位错误&#xff0c;除此之外&#xff0c;日志还可以将错误信息具体化&#xff0c;比如时间、位置等。 如何打印日志 使用Logger类 使用方法&#xff1a; Logger log LoggerFactory.getLogger&#xff08;类名/类名…

MVCC实现原理

MVCC实现原理 主要依赖隐藏字段undo logundolog生成的记录链 Read View可见性规则三个全局属性具体的比较规则 MVCC的整体处理流程RC、RR级别下的InnoDB快照读有什么不同 主要依赖 mvcc的实现原理主要依赖于记录中的三个隐藏字段&#xff08;对用户来说是不可见的&#xff09;…

【Spring Cloud Alibaba】8.路由网关(Gateway)

文章目录 简介什么是 Spring Cloud Gateway功能介绍工作流程 开始搭建创建项目修改POM文件添加启动类添加配置文件启动项目测试 网关全局过滤创建全局过滤器测试 结尾 简介 接下来对服务消费者添加路由网关来实现统一访问接口&#xff0c;本操作先要完成之前的步骤&#xff0c…

API 自动化测试难点总结与分享

笔者是 API 管理工具的项目参与者之一&#xff0c;在日常工作中会经常遇到 API 自动化测试难点&#xff0c;我决定总结分享给大家&#xff1a; API 自动化测试的难点包括&#xff1a; 接口的参数组合较多&#xff0c;需要覆盖各种可能的情况。 接口的状态和数据关联较多&#…