-
登录宿主机 关闭selinux :
vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出
重启服务器
查看状态getenforce 出现disabled则成功 -
关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service -
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 -
启动docker:
systemctl enable docker
systemctl start docker
查看docker状态:
systemctl status docker -
/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”
]}
-
创建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
- docker compose up
- 创建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
- a 将项目mysql数据传入/docker/laravel/mysql/data
b 进入mysql容器
mysql -u root -p 密码:root
use mysql;
source /var/lib/mysql/mysql.sql;
- docker compose up 重启服务。
- 使用虚拟机中的ip访问项目。