本文作者为olei,转载请注明。
使用 Docker 搭建 PHP 开发环境(Mac、Docker、Nginx、PHP-FPM、XDebug、PHPStorm、VSCode)。
因为最近换电脑的缘故需要重新部署一下本地的开发环境,之前采用的虚拟机方案,占用磁盘空间实在是太大,心疼SSD那么点地方,所以这次采用了Docker的方案来部署。关于这次部署的原则,我的想法是尽量使用官方的镜像来实现,尽量不改动或少改动镜像。因为是本地的开发环境,所以想多尝尝鲜,尽量使用高版本的软件来实现。从结果上来说,希望能给同样有需要搭建环境的同学起到一些帮助,少踩一些坑,如果能按照这篇文章的步骤一次搞定那是最好了。
对于使用php (python)等开发的项目,由于是解释型语言并不需要编译代码这个步骤(go或者java将依赖打包到可执行程序(包)中),但是往往还需要安装一些依赖的库或者第三方模块。
经几个星期反复测试总结出了整个lnmp环境的Dockerfile文件,并已经适用于公司开发环境中。
DNMP(Docker + Nginx + MySQL + PHP8/7/5 + Redis)是一款全功能的LNMP一键安装程序。
本文记录下部署sentry和其中遇到的问题 Sentry 是一款基于 Django实现的错误日志收集和聚合的平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node.js, php,ruby, C#,java 等语言的项目都可以做到无缝集成,甚至可以用来对iOS, Android 移动客户端以及 Web前端异常进行跟踪。我们可以在程序中捕获异常,并发送到 Sentry服务端进行聚合统计、展示和报警。 环境安装 请先安装 Docker 1.10+ yum in
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose的工程配置文件默认为docker-compose.yml,使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。 Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project。 Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。
ReviewBoard是个开源的、可扩展的、友好的基于Web的代码评审工具,是用Python框架Django开发的。
Go Playground 是 Golang 团队推出的在线语言工具,不论是对于初学者而言,还是对 Golang 开发者来说,它都不失为一个简单好用的神器。
翼龙面板,英文全名Pterodactyl,译为“翼龙”,以下文章均简称为翼龙面板。
DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一键安装程序。支持的服务丰富、功能强大、使用简单、兼容多平台。是适用于多端的一款docker开发与生产环境的PHP环境全家桶。
docker镜像的制作有2种方法,一种是启动一个容器并在容器里操作,再将容器提交为一个新的镜像;一种是写Dockerfile,然后执行dockerfile由docker给我们一步步自动生成新的镜像;显然第二种方法更高大上,也更适合容器需要不断版本更替的场景。本人在安装nginx和php的时候,更习惯自己下载源码编译安装,所以编译安装这里写Dockerfile实在是繁琐,而且nginx+php并不是需要频发更替版本,通常在制作容器前,跟开发确定好版本号,制作好容器可以一直使用;所以以下的操作,前半部分,nginx和php的安装在容器里操作;最后让nginx和php同时启动起来则是写了一个Dockerfile。
描述:由于个人家里的NAS以及公司团队对私有网盘的进行日常工作文件同步以及协同办公的需求,所以有了这篇文章,讲解记录从选项到安装以及同步使用等相关操作;
以下将图文并茂地介绍几款常用的一站式集成开发工具,它们专注于为开发者简化开发过程并提供方便的开发环境,堪称开发者的得力助手。
我之前部署我的博客项目(Django应用),没用Docker,直接借助的宝塔Linux服务器面板在服务器上部署的,部署起来也是十分的方便,使用了Django+Nginx+Supervisor+Gunicorn部署,可查看我写过的一片博客:Centos安装python3并使用Nginx+Gunicorn+virtualenv+supervisor来部署django项目。
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,可用作数据库,高速缓存和消息队列代理。Redis是完全开源免费的、遵守BSD协议。
知识那么多,大佬们学慢点,我营养跟不上啦! 前人栽树后人乘凉,本文主要是把一些资料依葫芦画瓢学习了下,做了个汇总.
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
本地开发环境是Web开发环境中的一种类型,它是指开发者自己的计算机上配置的一套用于开发和测试网站或应用程序的软件集合。这套环境使得开发者可以在本地计算机上构建和测试网站,而无需实时部署到服务器。
fastcgi_pass 地址为:主机ip+9000。因为在上面的步骤中,我已经把端口映射出来了。
1202 年了,如果你连 Docker 都不知道是什么,我建议买一本书看看——或者谷歌一下,博客已经写烂了。
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。
为了保证 Docker 镜像尽量小,PHP 的源文件是以压缩包的形式存在镜像中,官方提供了 docker-php-source 快捷脚本,用于对源文件压缩包的解压(extract)及解压后的文件进行删除(delete)的操作。
描述: 由于docker安装后是默认不允许远程访问的,所以很多小白可能就直接搜索网上的文章开启dcoker远程访问,然后照着操作。虽然这样可以远程访问了,但是直接暴露在公网上的2375端口是非常危险的,导致所有人都可以远程操作这台主机上的Docker。
里面定义了一些基础信息,安装的命令,以及最后启动的命令。下面将根据这些分类来讲解每个命令的用途。
前几天一直在面试,在面试的过程中,也遇到几家公司问了一些docker的知识,不过都比较基础。便对docker的基础知识做了一个总结,这里分享出来。文章也分享一个适用docker搭建的PHP开发环境全家桶,开箱即用,适用起来也非常的简单。
http://ip:8888, 这个是刚刚配置的服务器地址加上刚刚映射的主机端口。 输入用户名密码,数据库使用MYSQL,数据库以后用户密码,数据库nextcloud,地址写内部地址172.17.0.2. 然后安装指示一路填写信息,安装就好了。
Ansible是一个非常简单的IT自动化平台,使程序和系统更易于部署。Ansible本质上是一个进行了封装的Shell,优点在于它是去中心化的工具,可以直接通过ssh管理远程主机,实现无Agent的部署。
使用image创建container并进入交互模式, login shell是/bin/bash
项目需求 使用seafile搭建一个内网网盘 安装过程 官方给的例子如下: https://docs.seafile.com/d/cb1d3f97106847abbf31/files/?p=/dock
“ 我们在完成业务系统上线后除了正常关注系统进程、内存、CPU等这些物理指标并进行监控外,往往也需要观察线上业务日志的运行情况,特别是新系统上线后的业务异常日志排查分析是主动发现系统问题并进行优化迭代的一种非常有效地手段,但是没有一种好用的工具去监控分析,也是一件很累、很低效的事情,这里给大家介绍一款非常好用的业务日志监控工具—Sentry”。
XAMPP是一个广受欢迎的跨平台PHP开发环境,它为Windows、macOS和Linux用户提供了一个一体化的解决方案,让开发者可以轻松地在本地构建和测试网站。
Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为注释,每一行只支持一条指令,每条指令可以携带多个参数。 Dockerfile的指令根据作用可以分为两种,构建指令和设置指令。 构建指令用于构建image,其指定的操作不会在运行image的容器上执行; 设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。
Redis作为一个高性能、内存性的nosql数据库,已经成为日常开发必不可少的技术。对于一个开发人员来讲,不仅仅会使用Redis那么简单,也要学会如何管理、监控Redis服务。
docker官方和个人发布的镜像由于版本等各种原因,漏洞较多,已统计Docker Hub超过 30%的官方镜像包含高危漏洞。此外,由于网络等原因也会造成docker pull下载镜像的 速度很慢。基于这种情况,我们可以手动定制docker系统镜像。构建镜像的方式有两 种:
从镜像创建的运行实例,它可以被启动、停止和删除。每个容器之间是相互隔离,互不可见,保证了平台的安全性
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
最直接的影响,是原来在 X86_64 环境中可以正常运行的业务系统需要基于 Arm64 重新编译才可以运行。即使开发时使用的语言具备跨架构的能力,重新编译本身就是一种很繁复的工作,需要投入大量的人力成本和时间成本。
当我们用国内服务器自信满满地搭建好又一个wordpress站点时,当你准备着手为你的博客添砖加瓦时,你却发现,wordpress原生博客的响应速度让你怀疑人生,你望向窗外,看着这高楼耸立,熙攘喧哗,到处充满浮躁的城市,你不禁陷入了人与自然与世界问题的大思考。
环境部署是所有团队都必须面对的问题,随着系统越来越大,依赖的服务也越来越多,比如我们目前的一个项目就会用到: - Web服务器:Nginx - Web程序:PHP + Node - 数据库:MySQL - 搜索引擎:ElasticSearch - 队列服务:Gearman - 缓存服务:Redis + Memcache - 前端构建工具:npm + bower + gulp - PHP CLI工具:Composer + PHPUnit 因此团队的开发环境部署随之暴露出若干问题: 1. 依赖服务很多,本
-----------------------------------------------------------Dockerfile------------------------------------------------------ Dockerfile是一个镜像的表示,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器 所有的 Dockerfile 命令格式都是: INSTRUCTION arguments 虽然指令忽略大小写,但是建议使用大写。 FROM 命令 FROM <p_w_picpath> 或 FROM <p_w_picpath>:<tag> 这个设置基本的镜像,为后续的命令使用,所以应该作为Dockerfile的第一条指令。 比如: FROM ubuntu 如果没有指定 tag ,则默认tag是latest,如果都没有则会报错。 RUN 命令 RUN命令会在上面FROM指定的镜像里执行任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到。 两种格式: RUN <command> (the command is run in a shell - `/bin/sh -c`) 或: RUN ["executable", "param1", "param2" ... ] (exec form) RUN命令等价于: docker run p_w_picpath command docker commit container_id 注释 使用 # 作为注释 如: # Memcached # # VERSION 1.0 # use the ubuntu base p_w_picpath provided by dotCloud FROM ubuntu # make sure the package repository is up to date RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update # install memcached RUN apt-get install -y memcached MAINTAINER 命令 MAINTAINER <name> MAINTAINER命令用来指定维护者的姓名和联系方式 如: MAINTAINER Guillaume J. Charmes, guillaume@dotcloud.com ENTRYPOINT 命令 有两种语法格式,一种就是上面的(shell方式): ENTRYPOINT cmd param1 param2 ... 第二种是 exec 格式: ENTRYPOINT ["cmd", "param1", "param2"...] 如: ENTRYPOINT ["echo", "Whale you be my container"] ENTRYPOINT 命令设置在容器启动时执行命令 root@tankywoo-docker:~# cat Dockerfile FROM ubuntu ENTRYPOINT echo "Welcome!" root@tankywoo-docker:~# docker run 62fda5e450d5 Welcome! USER 命令 比如指定 memcached 的运行用户,可以使用上面的 ENTRYPOINT 来实现: ENTRYPOINT ["memcached", "-u", "daemon"] 更好的方式是: ENTRYPOINT ["memcached"] USER daemon EXPOSE 命令 EXPOSE 命令可以设置一个端口在运行的镜像中暴露在外 EXPOSE <port> [<port>...] 比如memcached使用端口 11211,可以把这个端口暴露在外,这样容器外可以看到这个端口并与其通信。 EXPOSE 11211 一个完整的例子: # Memcached # # VERSION 2.2 # use the ubuntu base p_w_picpath provided by dotCloud FROM ubuntu MAINTAINER Victor Coisne victor.coisne@dotcloud.com # make sure the package repository is up to date RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get u
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
是否有这样的场景,你搞了一个项目,在本地开发时需要搭建环境,放到线上时也需要搭建环境,到公司想暗戳戳玩一下要搭建环境,不搭还不行,因为你的环境依赖还挺多。这个时候如果有了Docker,只需要在机器上装个Docker,放上写好的Dockerfile,一行命令就自动完成这个事,方便又高效,岂不是很爽?
1.Docker基础镜像:提供基础应用型的Docker软件服务(例如:nginx,php,jdk等),所以dockerhub镜像,公有镜像,自定义私有镜像都可以理解为基础镜像。
配置流程非常简单,主要是参考了下面这篇博文配置,在宝塔面板下安装nextcloud,非常简单。
禅道 项目管理软件 是国产的开源项目管理软件,专注研发项目管理,内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能,实现了软件的完整生命周期管理。
领取专属 10元无门槛券
手把手带您无忧上云