傻瓜式教学Docker 使用docker compose部署 php nginx mysql

首先你可以准备这个三个服务,也可以在docker compose 文件中 直接拉去指定镜像,这里演示的是镜像服务已经在本地安装好了,提供如下:

PHP

# 设置基础镜像
FROM php:8.2-fpm# install dependencies
RUN apt-get update && apt-get install -y \vim \libzip-dev \libpng-dev \libjpeg-dev \iputils-ping \libmcrypt-dev \libmcrypt4 \libmhash-dev \libmhash2 \libxml2 \libxml2-dev \libbz2-1.0 \libbz2-dev \libfreetype6-dev \&& pecl install redis && docker-php-ext-enable redis \&& rm -rf /var/lib/apt/lists/*# install more php extensions
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install zip pdo_mysql gd# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# 安装 OPcache
RUN docker-php-ext-install opcache

日常用的扩展都有了应该,

RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install zip pdo_mysql gd

这两个你也可以移到上面的RUN一同安装

Nginx

# 设置基础镜像
FROM nginx# 安装一些必要的工具和额外软件包
RUN apt-get update && apt-get install -y \vim \curl \&& rm -rf /var/lib/apt/lists/*

Mysql

直接从官方镜像资源中拉去

docker pull mysql

这样你将产生三个镜像

下面开始利用这三个镜像去构建你的项目容器

1.找到你的项目地址,比如我的:

/home/wanghaiyang/project/customeFrame/fr

2.准备一个文件夹,用来放你的compse.yml文件(默认情况下,这一组服务的名字就是你这个文件夹名字),

3.准备一个compose.yml文件:内容如下   

version: '3'services:# PHP 服务php_server:image: php8.2# 使用的 PHP 镜像volumes:- /home/wanghaiyang/project/customeFrame/fr:/usr/share/nginx/htmlports:- "9000:9000"# 其他 PHP 相关配置...container_name: "compose-php"networks:- custome-network# Nginx 服务api_server:image: nginx# 使用的 Nginx 镜像volumes:- /home/wanghaiyang/project/customeFrame/fr:/usr/share/nginx/html- ./custome_frame.conf:/etc/nginx/conf.d/default.conf# 映射本地文件系统中的目录到容器中,确保 Nginx 使用自定义配置ports:- "8080:80"# 将主机的 8080 端口映射到容器的 8080 端口depends_on:- php_server- db_server# 定义依赖关系,确保 Nginx 在 PHP 和 MySQL 之后启动container_name: "compose-api"networks:- custome-network# MySQL 服务db_server:image: mysql# 使用的 MySQL 镜像# 其他 MySQL 相关配置...environment:MYSQL_ROOT_PASSWORD: wqzbxh@2018$$# 设置 MySQL root 用户密码ports:- 3700:3306# 将主机的 3700 端口映射到容器的 3306 端口volumes:- ./db_data:/var/lib/mysqlcontainer_name: "compose-db"networks:- custome-network# Adminer 服务(用于管理 MySQL 数据库)adminer:image: adminer# 使用的 Adminer 镜像restart: alwaysports:- 3701:8080# 将主机的 3701 端口映射到容器的 8080 端口container_name: "compose-adminer"
networks:custome-network:

    

再给一个custome_frame.conf文件,

server {listen       80;listen  [::]:80;server_name  localhost;# 配置根目录和默认文件location / {root   /usr/share/nginx/html;index  index.php index.html index.htm;}# 如果文件不存在,重写URL到index.phpif (!-e $request_filename){rewrite ^(.*)$ /index.php last;break;}# 将 PHP 脚本通过 FastCGI 传递到监听在 127.0.0.1:9000 上的服务器location ~ \.php$ {fastcgi_pass   php_server:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;include        fastcgi_params;}# 禁止访问 .htaccess 文件,如果 Apache 的文档根与 nginx 的文档根相符##location ~ /\.ht {#    deny  all;#}
}

这个时候已经全部结束了

adminer 这个东西是 管理数据库的,前身是phpAdmin的影子,它长这个样子

然后在你的当前目录直接就

docker compose up -d

然后就成功了,我们这个时候访问一下测试一下

OK没问题,说明Nginx 已经和 PHP 正常通讯了,我们再来看一下数据库请求;

证明也是没问题的

上面的基本上及参数一换就能用

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

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

相关文章

智慧医疗平台开发:在线问诊系统源码搭建详解

如今,在线问诊系统的出现为患者提供了更为灵活、便捷的医疗服务。我们在开发系统之前,应该先简单了解系统的功能以及相关的技术。 一、核心功能需求 -用户注册和登录:用户可以通过注册账户,或者使用第三方登录方式进入系统。 …

高速风筒4套硬件案子谁会成为王者----【其利天下技术】

关于高速风筒的硬件电路,从MCU的角度来说,严格意义上是可以区分为四种硬件电路的,当前市场上这四种硬件电路也是并行存在的。所以有朋友电话问我,我怎么看待这四种硬件方案的优劣势和未来的?今天特意根据个人视角&…

基层医疗卫生信息可视化:Flask、MySQL、Echarts的综合利用

基层医疗卫生信息可视化:Flask、MySQL、Echarts的综合利用 正文: 社区卫生健康数据可视化是提升医疗服务水平和促进健康管理的有效手段。本文将介绍一种基于Flask、MySQL和Echarts技术的社区卫生健康数据可视化系统,数据源来自市基层医疗卫生…

Apache RocketMQ,构建云原生统一消息引擎

本文整理于 2023 年云栖大会林清山带来的主题演讲《Apache RocketMQ 云原生统一消息引擎》 演讲嘉宾: 林清山(花名:隆基),Apache RocketMQ 联合创始人,阿里云资深技术专家,阿里云消息产品线负…

智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.孔雀算法4.实验参数设定5.算法结果6.参考文献7.MA…

Crowd Counting近期研究(附代码资源)

1.Semi-Supervised Crowd Counting with Contextual Modeling: Facilitating Holistic Understanding of Crowd Scenes paper:https://arxiv.org/abs/2310.10352 code:https://github.com/cha15yq/MRC-Crowd 摘要: 为了减轻训练可靠的人群计数模型所需的繁重标注…

二分查找——OJ题(二)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、点名1、题目讲解2、算法原理3、代码实现 二、搜索旋转排序数组中的最⼩值1、题目讲解2、算…

rime中州韵 程序配置结构讲解 保姆级教程

在完成了 Rime 引擎/框架的安装,并安装了基础输入方案后,我们就可以在这个基础上开始 DIY 了。毕竟,Rime 最大的优势就是可定制性强。 但是,在我们 DIY 前,我们需要先做些准备工作。磨刀不误砍柴工,我们需…

Javaweb见解

1 web相关的概念 1.1 软件的基本架构 C/S(Client-Server)。比如我们手机上的app QQ软件 飞秋 特点:必须下载特定的客户端程序。服务端升级之后,客户端也需要随着升级。 B/S(Broswer-Server).比如京东网站,腾讯qq官方网站 特点&#xff1…

一文搞清楚Java BytesToAscii和AsciiToBytes

文章目录 BytesToAsciiAsciiToBytes10进制和16进制byte对比 bytes2HexString和hexStringToBytes测试 BytesToAscii Testpublic void convertBytesToAscii() {byte[] bytes new byte[] { 0x31, 0x32, 0x33, 0x34, 0x35 };String asciiString new String(bytes);System.out.pri…

你怎么看待软件测试这个工作的?转行真的甘心吗!

先说一个插曲:上个月我有同学在深圳被裁员了,和我一样都是软件测试,不过他是平安外包,所以整个组都撤了,他工资和我差不多都是14K。 现在IT互联网已经比较寒冬,特别是软件测试,裁员先裁测试&am…

KaiwuDB 时序引擎数据去重功能详解

一、背景介绍 随着物联网领域的快速发展,时序数据的产生和处理需求不断增长。时序数据是按照时间顺序收集和记录的数据,其特点在于数据具有时间戳,并且时间是数据分析和查询的一个重要维度。 在实际场景中,可能存在多条相同时间…

k8s是什么

生么是k8s: Kubernetes:8个字母省略,就是k8s 自动部署,自动扩展和管理容器化部署的应用程序的一个开源系统、 k8s是负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具。 分布式和集群化的分布式进行容器管…

分支限界法求解01背包(优先队列)【java】

实验内容:运用分支限界法解决0-1背包问题 实验目的:分支限界法按广度优先策略遍历问题的解空间树,在遍历过程中,对已经处理的每一个结点根据限界函数估算目标函数的可能取值,从中选取使目标函数取得极值的结点优先进行广度忧先搜…

python 面试题第一弹

1. 如何理解Python中的深浅拷贝 浅拷贝(Shallow Copy)创建一个新的对象,该对象的内容是原始对象的引用。这意味着新对象与原始对象共享相同的内存地址,因此对于可变对象来说,如果修改了其中一个对象,另一个…

Echarts随机生成颜色

Echarts生成随机颜色,并且不要黑色、灰色、棕色等难看的颜色,暖色系并且颜色亮丽, 可以通过修改saturation 和lightness 的随机数值,提高颜色饱和度和亮度 function generateWarmColor() {let hue Math.floor(Math.random() * 3…

arcpy获取矢量坐标系

代码: shppath "矢量路径" shpdescribe arcpy.Describe(shppath) print(shpdescribe.spatialReference.name) 结果:

智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.袋獾算法4.实验参数设定5.算法结果6.参考文献7.MA…

人工智能_机器学习078_聚类算法_概念介绍_聚类升维_降维_各类聚类算法_有监督机器学习_无监督机器学习---人工智能工作笔记0118

首先看一下什么是聚类,我们可以进入sklearn的官网去看看 可以看到这里,首先classification 这个分类我们学完了,然后就是regression回归我们也学完了对吧,其实我们现实生活中的,大部分问题就是 这两种问题就可以解决了. 然后我们再来看一个: clustering,这个就是聚类对吧.聚类算…

【Linux驱动】最基本的驱动框架 | LED驱动

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🏀最基本的驱动框架⚽驱动程序框架⚽编程 🏀LED驱动⚽配置GPIO⚽编程…