傻瓜式教学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,一经查实,立即删除!

相关文章

【Redis】Redis 的数据类型

有五种常用数据类型:String、Hash、Set、List、SortedSet。以及三种特殊的数据类型:Bitmap、HyperLogLog、Geospatial ,其中HyperLogLog、Bitmap的底层都是 String 数据类型,Geospatial 的底层是 Sorted Set 数据类型。 五种常用…

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

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

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

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

Hive01_安装部署

Hive的安装 上传安装包 解压 tar zxvf apache-hive-3.1.2-bin.tar.gz mv apache-hive-3.1.2-bin hive解决Hive与Hadoop之间guava版本差异 cd /export/software/hive/ rm -rf lib/guava-19.0.jarcp cp /export/software/hadoop/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0…

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

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

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

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

rocky linux9 安装go 即接下去

首先,更新系统的软件包索引以获取最新的软件包信息: sudo dnf update使用以下命令安装 Go 语言: sudo dnf install golang安装完成后,你可以通过以下命令验证 Go 语言是否安装成功: go version4、用相对路径初始化g…

适配器模式(Adapter)

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间的协作。该模式涉及一个适配器,用于在已存在的接口和需要使用的接口之间进行适配。在Java中,适配器模式主要有两种实现方式:类适配器和对象适配器。 类适配器模式 在类适配器模式中,适配器通过继…

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

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

Go语言学习一

Go语言的发展历史 Go语言的三个作者分别是:罗伯特格利茨默(Robert Griesemer)、罗伯派克 (Rob Pike) 和 肯汤普森(Ken Thompson)。 Robert Griesemer是Google V8、Chubby和HotSpot JVM的主要贡献…

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、算…

免费部署静态网页,国内外访问套餐 GitHub Pages、Vercel、CLOUDFLARE

部署自己的博客或者前端静态页面,要嘛找一些免费托管平台,要嘛自己买服务器和域名。买了服务器,还得自己配置 nginx 和域名解析等。如果希望国内外都能访问,服务器最好是香港的,域名也可以不用备案。如果只是博客&…

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…

DES、AES简介

DES简介 DES(Data Encryption Standard)是一种对称加密算法,1977年被美国国家标准局(NIST)确定为联邦信息处理标准(FIPS),并作为商用数据加密标准。DES使用56位密钥和64位的分组长度…

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

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

k8s是什么

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