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
相关推荐
Gabriel_liao18 分钟前
Docker安装Neo4j
docker·容器·neo4j
Jackey_Song_Odd1 小时前
解决Ubuntu下无法装载 Windows D盘的问题
linux·ubuntu
乔巴不是狸猫1 小时前
第11周作业
linux
Bessssss2 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
silver6873 小时前
Linux 下的 GPT 和 MBR 分区表详解
linux
R-sz3 小时前
14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“
linux·python·centos
豆豆豆豆变3 小时前
Docker轻量级可视化工具Portainer
docker·容器·自动化运维
大熊程序猿4 小时前
xxl-job docker 安装
运维·docker·容器
code_abc4 小时前
Shell 脚本编程基础:变量
linux
星如雨落4 小时前
Linux shell脚本对常见图片格式批量转换为PDF文件
linux·shell