Linux CentOS使用Docker搭建laravel项目环境(实践案例详细说明)
一、安装docker
# 1、更新系统软件包:
sudo yum update# 2、安装Docker依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 3、添加Docker的yum源:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 4、安装Docker引擎:
sudo yum install -y docker-ce# 5、启动Docker服务:
sudo systemctl start docker
# docker常用命令# 查看版本信息
docker --version# 查看 Docker 的详细信息
docker info# 查看当前正在运行的 Docker 容器
docker ps# 进入容器查看
docker exec -it <容器名称或ID> /bin/bash
二、安装docker-composer
# 1、下载最新版本的Docker Compose:
curl -L https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 或者:
curl -L http://mirror.azure.cn/docker-toolbox/linux/compose/v2.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 2、添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
三、写docker-composer.yml配置文件
docker-compose.yml 文件是用于定义和配置多容器 Docker 应用程序的文本文件。它允许你通过一个文件来定义、配置和管理多个 Docker 容器,这些容器可以相互通信并一起运行。
找一个目录,写你的docker配置,我这边是在/home
# 进入目录
cd /home
# 创建 docker-comser目录
mkdir docker-composer # 进入docker-composer
cd docker-composer# 创建dockoer-compser.yml
vi dockoer-compser.yml
以下是我写的一个dockoer-compser.yml示例:
version: '3'
# 表示使用 Docker Compose 的版本 3 语法
services:nginx:image: nginx:latestports:- 80:80- 443:443# 开启80和443的映射volumes:- ./nginx/conf.d:/etc/nginx/conf.d- ./nginx/ssl:/etc/nginx/ssl- ./nginx/logs:/var/log/nginx# 将主机当前目录下的 nginx/conf.d 目录与容器内的 /etc/nginx/conf.d 目录进行映射,用于共享 Nginx 的配置文件# 将主机当前目录下的 nginx/ssl 目录与容器内的 /etc/nginx/ssl 目录进行映射,用于共享 SSL 证书文件# 将主机当前目录下的 nginx/logs 目录与容器内的 /var/log/nginx 目录进行映射,用于将 Nginx 的日志文件持久化到主机上myHtml:build: ./myHtml# 构建文件Dockerfile写在当前目录下的myHtml下面volumes:- /home/myHtml/api:/var/www/html/myHtml/api# 添加 volumes 部分来定义卷的映射关系,在运行 docker-compose up -d 启动容器时,Docker 将自动将主机目录中的文件同步到容器的挂载目录中。这意味着可以通过 SVN 更新主机目录中的代码,然后在容器中查看更新后的代码depends_on:- nginx# Add any additional configuration specific to myHtml(你的项目名)# 这里可以添加多个项目依赖同一个nginx容器
根据上面的配置,那么我需要在当前目录新建nginx目录,nginx目录下面分别还有三个目录:conf.d 、 ssl 、 logs。然后我在nginx/conf.d/下面就可以写我的网站nginx配置文件。
下面是我写的示例:
在nginx/conf.d/新建myHtml.conf
server {listen 80;server_name larashop.ishare.cool;# 注意 这里写的是nginx容器中的目录root /var/www/html/myHtml/api/public;index index.php index.html index.htm;location / {try_files $uri $uri/ /index.php$is_args$args;}location ~ \.php$ {try_files $uri /index.php =404;# 注意这里需使用 服务名:端口 的形式fastcgi_pass php-fpm73:9000;fastcgi_index index.php;fastcgi_buffers 16 16k;fastcgi_buffer_size 32k;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#fixes timeoutsfastcgi_read_timeout 600;include fastcgi_params;}location ~ /\.ht {deny all;}location ~ /\.(?!well-known).* {deny all;}
}
四、写Dockerfile文件
进入到当前目录下的 myHtml目录,新建Dockerfile:
FROM php:7.3-fpm
# 根据你的情况安装php版本# 安装 Laravel 所需的依赖
RUN apt-get update && apt-get install -y \libzip-dev \zip \unzip \&& docker-php-ext-install zip pdo_mysql# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer# 设置工作目录,需要对应上面配置nginx映射目录
WORKDIR /var/www/html/myHtml/api# 复制项目文件到容器
COPY /home/bugu/api /var/www/html/myHtml/api# 安装项目依赖
RUN composer install --no-interaction# 设置文件和目录权限
RUN chown -R www-data:www-data \/var/www/html/myHtml/api/storage \/var/www/html/myHtml/api/bootstrap/cache \/var/www/html/myHtml/api/public \/var/www/html/myHtml/api/vendor/
可以根据自己的情况有说增加,然后在终端中,进入包含 Dockerfile 文件的项目目录,执行下面命令来构建和启动具有修改后工作目录的容器。
docker-compose up -d
相关文章:
Linux CentOS使用Docker搭建laravel项目环境(实践案例详细说明)
一、安装docker # 1、更新系统软件包: sudo yum update# 2、安装Docker依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 3、添加Docker的yum源: sudo yum-config-manager --add-repo https://download.docker.com/linux/cen…...
第六课:Prompt
文章目录 第六课:Prompt1、学习总结:Prompt介绍预训练和微调模型回顾挑战 Pre-train, Prompt, PredictPrompting是什么?prompting流程prompt设计 课程ppt及代码地址 2、学习心得:3、经验分享:4、课程反馈:5、使用Mind…...
网络安全(初版,以后会不断更新)
1.网络安全常识及术语 资产 任何对组织业务具有价值的信息资产,包括计算机硬件、通信设施、IT 环境、数据库、软件、文档 资料、信息服务和人员等。 漏洞 上边提到的“永恒之蓝”就是windows系统的漏洞 漏洞又被称为脆弱性或弱点(Weakness)&a…...
开始学习Vue2(脚手架,组件化开发)
一、单页面应用程序 单页面应用程序(英文名:Single Page Application)简 称 SPA,顾名思义,指的是一个 Web 网站中只有唯一的 一个 HTML 页面,所有的功能与交互都在这唯一的一个页面内完成。 二、vue-cli …...
平替heygen的开源音频克隆工具—OpenVoice
截止2024-1-26日,全球范围内语音唇形实现最佳的应该算是heygen,可惜不但要魔法,还需要银子;那么有没有可以平替的方案,答案是肯定的。 方案1: 采用国内星火大模型训练自己的声音,然后再用下面…...
【自动化测试】读写64位操作系统的注册表
自动化测试经常需要修改注册表 很多系统的设置(比如:IE的设置)都是存在注册表中。 桌面应用程序的设置也是存在注册表中。 所以做自动化测试的时候,经常需要去修改注册表 Windows注册表简介 注册表编辑器在 C:\Windows\regedit…...
php二次开发股票系统代码:腾讯股票数据接口地址、批量获取股票信息、转换为腾讯接口指定的股票格式
1、腾讯股票数据控制器 <?php namespace app\index\controller;use think\Model; use think\Db;const BASE_URL http://aaaaaa.aaaaa.com; //腾讯数据地址class TencentStocks extends Home { //里面具体的方法 }2、请求接口返回内容 function juhecurl($url, $params f…...
uniapp 在static/index.html中添加全局样式
前言 略 在static/index.html中添加全局样式 <style>div {background-color: #ccc;} </style>static/index.html源码: <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><meta http-…...
acrobat调整pdf的页码和实际页码保持一致
Acrobat版本 具体操作 现在拿到pdf的结构如下: pdf页码实际页码1-10页无页码数11页第1页 操作,选择pdf第10页,右键点击 具体设置 最终效果...
ctfshow-命令执行
大佬文章 L i n u x \rm Linux Linux 下空格绕过 无参数 r c e \rm rce rce 无字符 r c e \rm rce rce web29 通配符: *:匹配任意多个字符 ?:匹配任意一个字符 []:匹配某个范围的字符( [ a d ] [ad] [ad] 表示 …...
【Python基础015】集合的用法
1、定义 集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典中的 “ 键对象”,因此是不能重复的且唯一的。 2、创建 (1)使用{}创建 a {1, 2, 3} # 集合存储整数b {1, 2,…...
解密神经网络:深入探究传播机制与学习过程
解密神经网络:深入探究传播机制与学习过程 文章目录 解密神经网络:深入探究传播机制与学习过程一、引言二、基础理论1. 人工神经元:构建块的定义2. 神经网络的结构3. 激活函数的作用 三、前向传播1. 数据流动:输入到输出2. 加权和…...
linux usb设备网络共享 usb/ip
USB设备的网络共享可以通过USB/IP来实现, USB/IP把USB I/O信息封装成TCP/IP格式在网络端传输 ,可以实现usb的全部功能,且跨平台,是个透明的设备共享机制。 一、服务端 $sudo modprobe usbip-core$sudo modprobe usbip_host$usbip…...
如何通过系统命令排查账号安全?
如何通过系统命令排查账号安全 query user 查看当前登录账号 logoff id 注销用户id net user 查看用户 net user username 查看用户登录情况 lusrmgr.msc 查看隐藏账号 winR打开regedit注册表 找到计算机\HEKY_LOCAL_MACHINE\SAM\SAM\右键给与用户读写权限 刷新打开 HKEY…...
《WebKit 技术内幕》学习之九(3): JavaScript引擎
3 JavaScriptCore引擎 3.1 原理 JavaScriptCore引擎是WebKit中的默认JavaScript引擎,也是苹果在开源WebKit项目之后,开源的另外一个重要的项目。同其他很多引擎一样,在刚开始的时候它的主要部分是一个基于抽象语法树的解释器,这…...
IS-IS:05 ISIS开销值和协议优先级
IS-IS 协议为路由器的每个 IS-IS 接口定义并维护了一个 level-1 开销值和一个 level-2开销值。开销值可以在接口上或者全局上手动配置,也可以使用 auto-cost自动计算确定。 修改接口cost: int g0/0/0 isis cost 50修改全局cost: isis cir…...
群辉NAS的远程访问
群辉NAS是私有云存储,局域网访问很容易【详见:网上邻居访问设置、其它设备的访问设置】,远程访问相对复杂,涉及很多关键因素,现将过程记录如下: 目录 1、互联网接入 2、绑定MAC与IP地址 3、路由器开启5…...
构建未来学堂:在线教育系统开发技术实践
在当今数字化时代,在线教育系统的开发越发显得至关重要。本文将带你深入了解在线教育系统的开发,涉及到关键的技术实践和代码示例。我们将采用现代化技术栈,为未来学堂的搭建提供实用的指南。 技术栈选择 在开始实际的开发之前,…...
EMQX 单机及集群搭建
目录 1. 通过 Yum 源安装(CentOS7 单机安装) 1.1. 通过以下命令配置 EMQX Yum 源: 1.2. 运行以下命令安装 EMQX: 1.3. 运行以下命令启动 EMQX: 1.4. 访问 http://192.168.88.130:18083,默认用户名: adm…...
SpringMVC-对静态资源的访问
1.工程中加入静态资源 在webapp下创建static文件夹,此文件夹专门放入静态资源 2.使项目可以处理静态资源的请求 在SpringMVC配置文件中添加以下语句 1.引入命名空间 xmlns:mvc"http://www.springframework.org/schema/mvc" xsi:schemaLocation“http…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
