通过虚拟机使用docker-compose.yml搭建laravel环境

  1. 登录宿主机 关闭selinux :
    vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出
    重启服务器
    查看状态getenforce 出现disabled则成功

  2. 关闭防火墙:
    systemctl stop firewalld.service
    systemctl disable firewalld.service

  3. docker环境搭建

    a 安装方式一:yum安装
    yum install -y yum-utils
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    b 安装方式二:rpm包安装
    rpm -Uvh --force --nodeps *.rpm

  4. 启动docker:
    systemctl enable docker
    systemctl start docker
    查看docker状态:
    systemctl status docker

  5. /etc/docker目录中添加daemon.json文件文件内容
    {
    “group”: “docker”,
    “registry-mirrors”: [
    “https://9n6c9xa9.mirror.aliyuncs.com”,
    “https://reg-mirror.qiniu.com”,
    “http://hub-mirror.c.163.com”,
    “https://docker.mirrors.ustc.edu.cn”,
    “https://cr.console.aliyun.com”,
    “https://mirror.ccs.tencentyun.com”
    ]

    }

  6. 创建docker-compose.yml文件:

#docker-compose.yml
#版本,配置文件使用第三套标准
version: "3"
#字段指定了在 Docker Compose 编排中要运行的服务。每个服务都有一个名称,并指定要使用的镜像和容器的配置选项
services:

  php:
    build:
      context: ./php
    container_name: php74-fpm
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - /home/www:/var/www/html:rw
      

  nginx:
    #镜像名称
    image: nginx:latest
    #容器名称
    container_name: nginx
    #端口映射将右边容器端口80映射到左边宿主机端口80
    ports:
      - 80:80
    #目录挂载,将宿主机/home/www/laravel映射到nginx的/usr/share/nginx/html目录
    volumes:
      - /home/www:/var/www/html:rw
      - /docker/laravel/nginx/conf:/etc/nginx/conf.d:rw
      - /docker/laravel/nginx/log:/var/log/nginx
      
     

  mysql:
    image: mysql:8.0
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - /docker/laravel/mysql:/etc/mysql/conf.d
      - /docker/laravel/mysql/logs:/logs
      - /docker/laravel/mysql/data:/var/lib/mysql
    environment:
       MYSQL_ROOT_PASSWORD: root
       
  redis:
    image: redis:latest
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - /docker/laravel/redis/data:/data
      - /docker/laravel/redis/redis.conf:/etc/redis/redis.conf
     

在docker-compose.yml文件同级创建php目录,php目录下创建Dockerfile文件:

FROM php:7.4-fpm

RUN apt-get update -yqq && \
    apt-get install -y apt-utils openssl libssl-dev && \
    pecl channel-update pecl.php.net && \
    apt-get install -y git && \
    curl -sS https://getcomposer.org/installer | php && \
    mv composer.phar /usr/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# Install the zip mysqli pdo_mysql extension
RUN apt-get install libzip-dev zip unzip -y && \
    docker-php-ext-configure zip && \
    docker-php-ext-install zip mysqli pdo_mysql

# Install gd iconv extension
RUN apt-get update && apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd


# Install redis extension
RUN pecl install redis \
    &&  rm -rf /tmp/pear \
    &&  docker-php-ext-enable redis

# Install imagick
RUN apt-get install -y libmagickwand-dev imagemagick && \
    pecl install imagick && \
    docker-php-ext-enable imagick

# Install pcntl
RUN docker-php-ext-install pcntl;

RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
    rm /var/log/lastlog /var/log/faillog

CMD ["php-fpm"]

EXPOSE 9000

  1. docker compose up
  2. 创建nginx的 配置文件。 /docker/laravel/nginx/conf/default.conf
server {
        listen       80;
        server_name  localhost;
 
        location / {
		# 注意 这里写的是nginx容器中的目录
            root   /var/www/html/laravel/public;
            index  index.html index.htm index.php;
            if ( !-e $request_filename ) {
                rewrite ^/(.*)? /index.php?/$1 last;
                break;
            }
        }
 
        location ~ \.php$ {
			#php是container_name容器名称:9000
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
			#此处必须改为root的配置目录
			fastcgi_param  SCRIPT_FILENAME /var/www/html/laravel/public$fastcgi_script_name;
			#fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

	access_log /var/log/nginx/laravel.log main;
	error_log /var/log/nginx/laravel.error.log;
        
}

9.将项目移动至 /home/www目录下 注意 项目名称 与 default.conf配置的项目名称是否一致

10.配置目录权限
chmod -R 777 /docker
chmod -R 777 /home/www

11 注意项目 .env文件中mysql redis的配置 需要跟docker-compose.yml文件配置 保持一致。

	DB_CONNECTION=mysql
	DB_HOST=mysql
	DB_PORT=3306
	DB_DATABASE=mysql
	DB_USERNAME=root
	DB_PASSWORD=root

	REDIS_HOST= redis
	REDIS_PASSWORD=null
	REDIS_PORT=6379
  1. a 将项目mysql数据传入/docker/laravel/mysql/data

b 进入mysql容器
mysql -u root -p 密码:root
use mysql;
source /var/lib/mysql/mysql.sql;

  1. docker compose up 重启服务。
  2. 使用虚拟机中的ip访问项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值