Docker nginx+php72+php74+mysql57, 并安装gd和mysql扩展

运行docker:

 
  1. $ sudo systemctl start docker

1. 复制配置文件到宿主机:

 
  1. # 创建宿主机目录结构
  2. $ mkdir -p /www/docker/nginx/logs
  3. $ mkdir -p /www/docker/php/php72
  4. $ mkdir -p /www/docker/php/php74
  5. $ mkdir -p /www/web
  6. # 创建 nginx 容器
  7. $ docker run -d --name nginx --network mxd nginx
  8. # 复制 nginx 配置文件
  9. $ docker cp nginx:/etc/nginx/conf.d /www/docker/nginx
  10. $ docker cp nginx:/etc/nginx/nginx.conf /www/docker/nginx
  11. # 创建 php 容器
  12. $ docker run -d --name php72 --network mxd php:7.2-fpm
  13. $ docker run -d --name php74 --network mxd php:7.4-fpm
  14. # 复制 php 配置文件
  15. $ docker cp php72:/usr/local/etc/php-fpm.d/www.conf /www/docker/php/php72
  16. $ docker cp php72:/usr/local/etc/php/php.ini-development /www/docker/php/php72/php.ini
  17. $ docker cp php74:/usr/local/etc/php-fpm.d/www.conf /www/docker/php/php74
  18. $ docker cp php74:/usr/local/etc/php/php.ini-development /www/docker/php/php74/php.ini
  19. # 销毁容器
  20. $ docker rm -vf nginx php72 php74

2. 创建容器, 挂载目录:

 
  1. # 创建 nginx 容器
  2. # -v 说明:
  3. # 第1个: 挂载 nginx 主配置文件
  4. # 第2个: 挂载 nginx 站点配置目录
  5. # 第3个: 挂载日志
  6. # 第4个: 挂载 html 文件目录
  7. $ docker run -d --name nginx -p 80:80 -p 443:443 --network mxd \
  8. -v /www/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
  9. -v /www/docker/nginx/conf.d:/etc/nginx/conf.d \
  10. -v /www/docker/nginx/logs:/var/log/nginx \
  11. -v /www/web:/www/web \
  12. nginx
  13. # 创建 php 容器
  14. # -v 说明:
  15. # 第1个: 挂载 php-fpm 配置文件
  16. # 第2个: 挂载 php 配置文件
  17. # 第3个: 挂载 html 文件目录
  18. $ docker run -d --name php72 --network mxd \
  19. -v /www/docker/php/php72/www.conf:/usr/local/etc/php-fpm.d/www.conf \
  20. -v /www/docker/php/php72/php.ini:/usr/local/etc/php/php.ini \
  21. -v /www/web:/www/web \
  22. php:7.2-fpm
  23. $ docker run -d --name php74 --network mxd \
  24. -v /www/docker/php/php74/www.conf:/usr/local/etc/php-fpm.d/www.conf \
  25. -v /www/docker/php/php74/php.ini:/usr/local/etc/php/php.ini \
  26. -v /www/web:/www/web \
  27. php:7.4-fpm

3. 安装php扩展pdo_mysql,gd,zip,intl,redis

 
  1. # 进入容器
  2. $ docker exec -it php74 bash
  3. # 安装`pdo_mysql`扩展:
  4. $ docker-php-ext-install pdo_mysql
  5. # 单独安装`gd`扩展
  6. $ apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
  7. && docker-php-ext-configure gd --with-freetype --with-jpeg \
  8. && docker-php-ext-install -j$(nproc) gd
  9. # 安装`zip`扩展:
  10. $ apt-get update && apt-get install -y --no-install-recommends libzip-dev \
  11. && rm -r /var/lib/apt/lists/* \
  12. && docker-php-ext-install -j$(nproc) zip
  13. # 安装`intl`扩展:
  14. $ apt-get update && apt-get install -y zlib1g-dev libicu-dev g++ \
  15. && docker-php-ext-configure intl \
  16. && docker-php-ext-install intl
  17. # 安装`redis`扩展(几个选项都输入`no`):
  18. $ pecl install redis && docker-php-ext-enable redis
  19. # 退出容器
  20. $ exit

4. 配置站点:

4.1. 默认站点:

 
  1. server {
  2. listen 80;
  3. server_name default.ddd;
  4. root /www/web/default;
  5. index index.php index.html index.htm;
  6. location / {
  7. try_files $uri $uri/ =404;
  8. }
  9. location = /50x.html {
  10. root /www/web/default;
  11. }
  12. location ~ \.php$ {
  13. # root html;
  14. fastcgi_pass php72;
  15. fastcgi_index index.php;
  16. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  17. include fastcgi_params;
  18. }
  19. location ~ /\.ht {
  20. deny all;
  21. }
  22. }

4.2. 默认其它站点:

 
  1. server {
  2. listen 80;
  3. server_name pintuu.ddd;
  4. root /www/web/pintuu;
  5. index index.php index.html index.htm;
  6. location / {
  7. try_files $uri $uri/ =404;
  8. }
  9. location = /50x.html {
  10. root /www/web/pintuu;
  11. }
  12. location ~ \.php$ {
  13. # root html;
  14. fastcgi_pass php74;
  15. fastcgi_index index.php;
  16. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  17. include fastcgi_params;
  18. }
  19. location ~ /\.ht {
  20. deny all;
  21. }
  22. }

4.3. 上传网站代码;

4.4. 重启nginx:

 
  1. $ docker restart nginx
  2. # 重载配置文件
  3. $ docker exec nginx nginx -s reload
  4. # 测试配置文件是否正确
  5. $ docker exec nginx nginx -t

5. 安装mysql

5.1. 复制配置文件到宿主机:

 
  1. # 创建目录(该目录在启动镜像之前要保证为空, 否则密码可能错误)
  2. $ mkdir -p /www/docker/mysql/mysql57/data
  3. # 创建容器
  4. $ docker run -d --name mysql57 --network mxd -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
  5. # 复制配置文件
  6. $ docker cp mysql57:/etc/mysql/conf.d /www/docker/mysql/mysql57
  7. $ docker cp mysql57:/etc/mysql/mysql.conf.d /www/docker/mysql/mysql57
  8. # 删除容器
  9. $ docker rm -vf mysql57

5.2. 创建mysql容器,挂载目录:

 
  1. $ docker run -d --name mysql57 --network mxd \
  2. -v /etc/localtime:/etc/localtime \
  3. -v /www/docker/mysql/mysql57/data:/var/lib/mysql \
  4. -v /www/docker/mysql/mysql57/conf.d:/etc/mysql/conf.d \
  5. -v /www/docker/mysql/mysql57/mysql.conf.d:/etc/mysql/mysql.conf.d \
  6. -e MYSQL_ROOT_PASSWORD=123456 \
  7. mysql:5.7

5.3. 测试连接:

 
  1. $ docker exec -it mysql57 mysql -uroot -p123456
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值