当前位置: 首页 > article >正文

docker-compose部署laravel项目实战(主机nginx连接项目容器)(详细配置过程)

我用的是主机上的nginx,没有用docker安装nginx, 所以需要先在主机上安装nginx

# 更新系统yum
sudo yum update

# 安装安装包

sudo yum install epel-release
sudo yum install wget

# 安装Nginx
sudo yum install nginx
#启动
sudo systemctl start nginx
#开机自启动
sudo systemctl enable nginx

一、安装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> 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

这里可能会遇到问题, 就是下载不了Docker Compose,或者版本不兼容问题,首先确认你的服务器是什么,比如我这里是centos7.5, 64位, 那么,可以直接去网站下载对应版本Index of /docker-toolbox/

选择对应版本下载后,把文件放到/usr/local/bin/docker-compose

然后给命令加上权限

# 2、添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose

三、写docker-composer.yml配置文件

# 进入目录
cd /home
# 创建 docker-comser目录
mkdir docker-composer 
 
# 进入docker-composer
cd docker-composer
 
# 创建dockoer-compser.yml
vi dockoer-compser.yml
 
version: '3'
# 表示使用 Docker Compose 的版本 3 语法
services:
  app:
    build: /home/mydemo
    restart: always
    container_name: mydemo
    # 容器名称为mydemo
    ports:
      - "8000:9000"
    # 主机8000端口映射到容器的9000端口,9000是php-fpm的默认端口处理php请求
    volumes:
      - /home/myDemo:/var/www/html/myDemo
#把你的laravel项目放到主机/home/myDemo下面
    depends_on:
      - redis
  # redis
  redis:
    image: redis:latest
    container_name: redis
    restart: unless-stopped
    ports:
      - 6379:6379


    

四、配置nginx

在nginx/conf.d/新建myHtml.conf

server {
    listen 80;
    server_name myDemo.com; # 这里填写你的项目域名
    # 注意 这里写的是nginx容器中的目录,需要和你容器项目里面放的访问路径对应
    root /var/www/html/myDemo/public;
    index index.php index.html index.htm;

 location / {
         try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        # 注意这里需使用 主机:端口 的形式,这里8000就是docker-compose配置里面的主机端口,映射到容器的9000端口上处理php项目文件
        fastcgi_pass 127.0.0.1:8000;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }


    error_log /var/log/nginx/myDemo-error.log;
}

五、写Dockerfile文件

该文件放在/home/myDemo下面,也就是项目根目录下面

FROM php:7.3-fpm

# 安装依赖
RUN apt-get update && apt-get install -y \
    libzip-dev \
    zip \
    unzip \
    && docker-php-ext-install zip pdo_mysql
RUN apt-get install -y vim



# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# 设置工作目录
WORKDIR /var/www/html/myDemo

# 复制整个目录
COPY . /var/www/html/myDemo

# 设置文件和目录权限
RUN find /var/www/html/myDemo -type d -exec chmod 755 {} \; \
    && find /var/www/html/myDemo -type f -exec chmod 644 {} \; \    && chmod -R 777 /var/www/html/myDemo/storage/ /var/www/html/myDemo/public/ /var/www/html/myDemo/bootstrap/cache/ /var/www/html/myDemo/vendor/

# 其他配置和运行指令...

然后我们就可以启动构建容器

# 构建容器
docker-compose up -d

通过docker ps -a 可以看到容器是否已经启动

docker exec -it myDemo bash进入容器后,也可以安装需要的一些基本的命令包

# 安装vim
apt-get update && apt-get install -y vim

# 安装ls
apt-get update && apt-get install -y ps

# 安装ls
apt-get update && apt-get install -y losf

    


http://www.kler.cn/a/228655.html

相关文章:

  • 消息队列篇--原理篇--RocketMQ(NameServer,Broker,单机上每秒处理数百万条消息性能)
  • 微软宣布Win11 24H2进入新阶段!设备将自动下载更新
  • 郑州大学2022级大三期末复习总结(数据库,传感器,嵌入式,人工智能,移动终端开发,计算机英语)
  • 【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用
  • 放大芯片参数阅读
  • opencv图像基础学习
  • SpringBoot 集成 WebSocket,实现后台向前端推送信息
  • 利用jmeter完成简单的压力测试
  • 贪心算法(简单易懂,考研复试上机知识点)
  • 保护个人信息安全,避免成为“互联网中的裸泳者”
  • 代码随想录算法训练营第27天| 39. 组合总和、40.组合总和II、131.分割回文串
  • 教师培训内容有哪些方面 本体知识和能力要求
  • 19.HarmonyOS App(JAVA)依赖布局DependentLayout使用方法
  • 关于v8垃圾回收机制以及与其相关联的知识点--还没整理版本
  • 云数据库RDS云监控
  • QT自用,勿点
  • EMNLP 2023精选:Text-to-SQL任务的前沿进展(上篇)——正会论文解读
  • 免重启解决docker No chain/target/match by that name 免重启解决方案
  • STM32F407移植OpenHarmony笔记7
  • [经验] 月字旁一个卢念什么 #职场发展#媒体#微信
  • 【开源精选导航】GitHub-Chinese-Top-Charts:一榜在手,优质中文项目轻松找寻
  • 通过Navicat for MySQL排查sql语句错误
  • 问题:下列哪些属于历史文化资源的特征( ). #学习方法#学习方法
  • linux 05重定向和管道管理
  • 如何使用VS Code编写小游戏并实现公网游玩本地游戏【内网穿透】
  • vue-3d-loader