Linux CentOS使用Docker搭建laravel项目环境(实践案例详细说明)

一、安装docker

bash 复制代码
# 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
bash 复制代码
# docker常用命令
 
# 查看版本信息
docker --version
 
# 查看 Docker 的详细信息
docker info
 
# 查看当前正在运行的 Docker 容器
docker ps
 
# 进入容器查看
docker exec -it <容器名称或ID> /bin/bash

二、安装docker-composer

bash 复制代码
# 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
bash 复制代码
# 2、添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose

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

docker-compose.yml 文件是用于定义和配置多容器 Docker 应用程序的文本文件。它允许你通过一个文件来定义、配置和管理多个 Docker 容器,这些容器可以相互通信并一起运行。

找一个目录,写你的docker配置,我这边是在/home

bash 复制代码
# 进入目录
cd /home
# 创建 docker-comser目录
mkdir docker-composer 

# 进入docker-composer
cd docker-composer

# 创建dockoer-compser.yml
vi dockoer-compser.yml

以下是我写的一个dockoer-compser.yml示例:

bash 复制代码
version: '3'
# 表示使用 Docker Compose 的版本 3 语法
services:
  nginx:
    image: nginx:latest
    ports:
      - 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

bash 复制代码
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 timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

四、写Dockerfile文件

进入到当前目录下的 myHtml目录,新建Dockerfile:

bash 复制代码
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 文件的项目目录,执行下面命令来构建和启动具有修改后工作目录的容器。

bash 复制代码
 docker-compose up -d
相关推荐
许白掰1 小时前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
B1nna2 小时前
Docker学习
学习·docker·容器
缘友一世2 小时前
网安系列【15】之Docker未授权访问漏洞
docker·容器
longze_75 小时前
Ubuntu连接不上网络问题(Network is unreachable)
linux·服务器·ubuntu
Dirschs5 小时前
【Ubuntu22.04安装ROS Noetic】
linux·ubuntu·ros
qianshanxue115 小时前
ubuntu 操作记录
linux
AmosTian8 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
慕木兮人可9 小时前
Docker部署MySQL镜像
spring boot·后端·mysql·docker·ecs服务器
这我可不懂10 小时前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇11 小时前
java idea 本地debug linux服务
java·linux·intellij-idea