我是靠谱客的博主 傲娇饼干,这篇文章主要介绍docker-compose 部署 php + nginx + mysql + redis,现在分享给大家,希望可以做个参考。

1,在开动之前首先创建php + nginx + mysql + redis的配置和数据存储路径,大概是下图的样子

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 因为目录全部展开会导致截图不完整,我在这里介绍一下每个目录的功能 mysql conf: 必要目录,使用默认配置即可,mysql8配置密码加密方式会用到 data: 必要目录,数据存储路径 logs: 必要目录,日志路径 nginx conf: 必要目录,下面会放 nginx.conf nginx.conf: 必要文件 conf.d: 不必要目录,相当于vhost www.conf: 你的站点配置 log: 必要目录,日志路径 php etc: 必要目录,配置项都在这 php: 必要目录。ini文件要放这里 php.ini: 必要文件,php配置文件 php-fpm.d: 必要目录,fpm非通用配置文件目录 www.conf: 非必要文件,不同用户不同端口不同任务 php-fpm.conf: 必要文件,这是主要配置文件 extension: 必要目录,php定制化目录 Dockerfile: 必要文件,这里将定制你需要的php,必要的原因是docker-compose会从这build log: 必要目录,日志路径 redis conf: 必要目录,配置文件目录 redis.conf: 必要文件,配置文件 data: 必要目录,持久化文件所在目录 docker-compose.yaml: 必要文件

 2,创建好目录后,我们先来定制我们的php吧,这个Dockerfile你可以先build了,因为在docker-compose要直接用,镜像名字随意,我这里用php74

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 该装的都装上 // 版本7.4 FROM php:7.4-fpm // composer RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/bin/composer && chmod +x /usr/bin/composer // 各种依赖库和扩展 RUN apt-get update && apt-get install -y build-essential libmagickcore-dev libmagickwand-dev imagemagick libfreetype6-dev libmcrypt-dev libpng-dev libzip-dev libwebp-dev && docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2/ && docker-php-ext-install -j$(nproc) gd iconv pdo_mysql mysqli bcmath calendar exif gettext sockets dba pcntl shmop sysvmsg sysvsem sysvshm zip && pecl install redis-5.1.1 && pecl install imagick && pecl install mcrypt && docker-php-ext-enable redis imagick mcrypt // 这句很重要,如果和你的nginx用户不同会导致你的服务起不来 RUN groupadd www && useradd -g www www // 如果你需要别的扩展,还可以再加

3,好了,开始制作一下docker-compose.yaml吧

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
version: '3' services: php: container_name: "php74" // 可以直接用php镜像,但是出来可能缺东西,而且环境也不完整 // image: php:7.4 build: ./docker-manager/php/extension // 这个目录放上我们刚才做好的定制化php的Dockerfile ports: - "9000:9000" // fpm 端口 // restart: always volumes: - ./docker-manager/php/etc:/usr/local/etc // 映射配置文件 - ./docker-manager/php/log:/var/log/php // 日志文件映射 // 内部逻辑:这个必须加,因为nginx将请求转发给php后,实际上是php去执行了脚本解析 - /Users/guoyi/php/src:/www // 项目目录,我所有的php项目都在src下面,只要去增加nginx配置就可以了,很方便。 stdin_open: true // stdin_open configures service containers to run with an allocated stdin. tty: true // tty configure service container to run with a TTY. links: - "mysql" // 链接mysql服务 networks: app_net: ipv4_address: 10.10.10.3 // 分配ip environment: - TZ=Asia/Shanghai # 设置时区 nginx: container_name: "nginx" image: nginx:latest // build: ./docker-manager/nginx // 也可以定制哟 restart: always ports: - "80:80" - "443:443" environment: - TZ=Asia/Shanghai depends_on: - "php" // nginx必须依赖php的,所以要用depends_on links: - "php:php74" // 链接php volumes: - ./docker-manager/nginx/conf.d:/etc/nginx/conf.d // 子配置文件 - ./docker-manager/nginx/conf/nginx.conf:/etc/nginx/nginx.conf // 主配置文件 - ./docker-manager/nginx/log:/var/log/nginx/ // 日志 networks: app_net: ipv4_address: 10.10.10.2 // 分配ip mysql: container_name: "mylsql" image: mysql:5.7 ports: - "13306:3306" volumes: - ./docker-manager/mysql/data:/var/lib/mysql // 数据目录 - ./docker-manager/mysql/conf:/etc/mysql/conf.d // 配置文件 - ./docker-manager/mysql/logs:/data/mysql/logs // 日志 restart: always environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=123456 // 初始化密码 networks: app_net: ipv4_address: 10.10.10.1 // ip redis: container_name: redis image: redis:5 restart: always ports: - "6379:6379" volumes: - ./docker-manager/redis/conf:/usr/local/etc/redis // 配置文件 - ./docker-manager/redis/data:/data // 数据目录 command: redis-server /usr/local/etc/redis/redis.conf --requirepass 123456 // 启动redis environment: - TZ=Asia/Shanghai // 勘误:redis如果不在同一网段,会出现不能访问的问题 networks: app_net: ipv4_address: 10.10.10.4 networks: // 定义网络 app_net: driver: bridge driver_opts: com.docker.network.enable_ipv6: "true" ipam: config: - subnet: 10.10.0.0/16

4,到此,环境相关的东西就都准备好了,我们只需要把我们的项目挂载到php容器下面的volumes下面,那就可以直接进行开发调试了。

最后

以上就是傲娇饼干最近收集整理的关于docker-compose 部署 php + nginx + mysql + redis的全部内容,更多相关docker-compose内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部