傻瓜式教学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.rhkb.cn/news/225170.html

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

相关文章

【docker笔记】docker理论及安装

前言 本笔记来源于尚硅谷docker教学视频 视频地址:https://www.bilibili.com/video/BV1gr4y1U7CY/?spm_id_from333.337.search-card.all.click 纯手打笔记,来之不易,感谢支持~ Docker简介 docker为什么会出现 想象一下:一个应用…

【数据结构初阶】二叉树(2)

二叉树顺序结构 1.二叉树的顺序结构及实现1.1二叉树的顺序结构 1.2 堆的概念及结构1.3 堆的实现1.3.1向上调整1.3.2向下调整1.3.3交换函数1.3.4打印1.3.5初始化1.3.6销毁1.3.7插入1.3.8删除1.3.9获得堆顶元素1.3.10判断是否为空1.3.6 堆的代码实现 1.3.2堆的创建1.3.3 建堆时间…

Tg5032smn:高稳定性105℃高温

TG5032SMN是一款频率范围10MHz ~ 54MHz,具有高稳定的TCXO晶振,可与CMOS或限幅正弦输出。外部尺寸5.0 3.2 1.45mm,超小型,质地轻。该系列晶振的额定工作范围-40℃~﹢105C内可高稳定性工作,使得信号频率的误差很小。TG5032SMN与其他…

在k8s中将gitlab-runner的运行pod调度到指定节点

本篇和前面的 基于helm的方式在k8s集群中部署gitlab 具有很强的关联性,因此如果有不明白的地方可以查看往期分享: 基于helm的方式在k8s集群中部署gitlab - 部署基于helm的方式在k8s集群中部署gitlab - 备份恢复基于helm的方式在k8s集群中部署gitlab - 升…

云原生Kubernetes:K8S集群版本升级(v1.22.14 - v1.23.14)

目录 一、理论 1.K8S集群升级 2.环境 3.升级集群(v1.23.14) 4.验证集群(v1.23.14) 二、实验 1. 环境 2.升级集群(v1.23.14) 2.验证集群(v1.23.14) 一、理论 1.K8S集群升级 …

链表常见题|删除链表、合并链表、环形链表、相交链表、反转链表、回文链表

链表常见题|删除链表、合并链表、环形链表、相交链表、反转链表、回文链表 文章目录 链表常见题|删除链表、合并链表、环形链表、相交链表、反转链表、回文链表2.两数相加19.删除链表的倒数第 N 个结点21.合并两个有序链表141.环形链表142.环形链表 II160.相交链表206.反转链表…

C++-类和对象(1)

1.面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完 成。…

SpringBoot 3.2.0 基于SpringDoc接入OpenAPI实现接口文档

依赖版本 JDK 17 Spring Boot 3.2.0 SpringDoc 2.3.0 工程源码&#xff1a;Gitee 导入依赖 <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEnco…

深入剖析LinkedList:揭秘底层原理

文章目录 一、 概述LinkedList1.1 LinkedList简介1.2 LinkedList的优点和缺点 二、 LinkedList数据结构分析2.1 Node节点结构体解析2.2 LinkedList实现了双向链表的原因2.3 LinkedList如何实现了链表的基本操作&#xff08;增删改查&#xff09;2.4 LinkedList的遍历方式 三、 …

SQL server 数据库练习题及答案(练习2)

使用你的名字创建一个数据库 创建表&#xff1a; 数据库中有三张表&#xff0c;分别为student,course,SC&#xff08;即学生表&#xff0c;课程表&#xff0c;选课表&#xff09; 问题&#xff1a; --1.分别查询学生表和学生修课表中的全部数据。--2.查询成绩在70到80分之间…

dhcp的配置

原理 就是服务器&#xff08;路由器或者交换机分配网段&#xff09; 动态分配 接口资源池 全局资源池 静态分配 实验 ar1 ip地址 r1-r3 dhcp en 打开dhcp en 第三步 配置地址池 接口 进入端口 dhcp select interface 设置接口资源池 dhcp server dns-…

5G NR无线蜂窝系统的信道估计器设计

文章目录 DMRS简介DMRS类型DMRS频域密度 信道估计实验仿真实验参数实验实验结论 DMRS简介 DMRS类型 类型A&#xff1a;DMRS位于时隙的第二个或第三个OFDM符号&#xff0c;由14个OFDM符号组成&#xff0c;当数据占据大部分时隙时使用A型映射。 类型B&#xff1a;用在URLLC中&a…

【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; Mybatis ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 一、概述 MyBatis简介 主要特性 1. 动态SQL 2.结果映射 3 .插件机制 二、MyBatis配置文件 1.配置文件结构 数据库连…

15 款Python编辑器的优缺点,别再问我“选什么编辑器”

本文介绍了多个 Python IDE&#xff0c;并评价其优缺点。读者可以参考此文列举的 Python IDE 列表&#xff0c;选择适合自己的编辑器。 写 Python 代码最好的方式莫过于使用集成开发环境&#xff08;IDE&#xff09;了。它们不仅能使你的工作更加简单、更具逻辑性&#xff0c;…

Spring Boot整合MyBatis-Plus框架快速上手

最开始&#xff0c;我们要在Java中使用数据库时&#xff0c;需要使用JDBC&#xff0c;创建Connection、ResultSet等&#xff0c;然后我们又对JDBC的操作进行了封装&#xff0c;创建了许多类似于DBUtil等工具类。再慢慢的&#xff0c;出现了一系列持久层的框架&#xff1a;Hiber…

GBase南大通用-GBase 8a资源管理功能试用

环境&#xff1a;centos7.9&#xff1b;GBase 8a V9.5.3.27 资源管理功能简介 GBase南大通用的GBase 8a MPP Cluster 资源管理功能可以对 SELECT 和 DML 等受控 SQL 在运 行过程中使用的 CPU、内存、I/O 和磁盘空间等资源进行合理管控&#xff0c;以达到资 源合理利用&#x…

【toolschain algorithm cpp ros】cpp工厂模式实现--后续填充具体规划算法,控制器版的已填充了算法接入了仿真器

写在前面 现在局势危机&#xff0c;于是想复习一下之前写的设计模式&#xff0c;之前提到&#xff0c;做过一个闭环仿真器&#xff08;借用ros&#xff09;&#xff0c;见https://blog.csdn.net/weixin_46479223/article/details/134864123我的控制器的建立遵循了工厂模式&…

【低照度图像增强系列(2)】Retinex(SSR/MSR/MSRCR)算法详解与代码实现

前言 ☀️ 在低照度场景下进行目标检测任务&#xff0c;常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题&#xff0c;给检测带来一定的难度。 &#x1f33b;使用图像增强模块对原始图像进行画质提升&#xff0c;恢复各类图像信息&#xff0c;再使用目标检…

C#与php自定义数据流传输

C#与php自定义数据流传输 介绍一、客户端与服务器数据传输流程图客户端发送数据给服务器&#xff1a;服务器返回数据给客户端&#xff1a; 二、自定义数据流C#版本数据流PHP版本数据流 三、数据传输测试1.在Unity中创建一个C#脚本NetWorkManager.cs2.服务器www目录创建StreamTe…

【Linux驱动】驱动框架的进化 | 总线设备驱动模型

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux驱动》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f969;驱动框架的进化&#x1f960;分层&#x1f960;面向对象&#x1f960;编程&am…