docker配置php开发环境

docker技术 / 142人浏览 / 0人评论

docker配置php开发环境

0.安装dockers桌面版,并启动,默认直接下一步,这里不做过多阐述

docker官网自行下载即可,windows无所谓,Mac注意下载对应芯片版本即可: docker官网:https://www.docker.com/

1. 创建自己的docker网络, 默认桥接模式

➜  ~ docker network create mynet
32c681d46c036dd9450e45f8930d7520f47f9fbb2df83c6348752d56683bcee5
➜  ~ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
4a45750545f0   bridge    bridge    local
31d09483ca15   host      host      local
32c681d46c03   mynet     bridge    local
bacb36f06567   none      null      local

2.安装nginx镜像最新版本

docker pull nginx:latest

3.安装php7.4-fpm镜像

docker pull php:7.4-fpm

4.安装mysql:8.0镜像

docker pull mysql:8.0

5.安装redis:5.0.4镜像

docker pull redis:5.0.4

6.查看当前已安装镜像

docker images

查看docker镜像

7.创建本地目录:包括/docker/nginx/conf/&& /docker/nginx/log&&/docker/php

主要用来解决docker的本地配置文件映射要用到

8.创建运行nginx的容器,并把本地的配置文件添加映射

 docker run --name nginx -p 80:80 -d -v /docker/nginx/conf:/etc/nginx/conf.d -v /docker/nginx/www:/usr/share/nginx/html -v /docker/nginx/log:/var/log/nginx --net mynet nginx

-p 主机和容器端口互联,主机8088:80

-v 目录挂载

-d 后台运行

--net mynet 桥接网络

安装完之后 打开浏览器 http://localhost:端口号 测试效果

8.如果我们想进一步的修改nginx配置。

进入容器

docker exec -it mynginx /bin/bash

编辑配置文件

vim /etc/nginx/nginx.conf

如果没有vim,通过下面的命令进行安装vim

apt-get update #更新包管理

apt-get install vim -y #安装vim

9.创建PHP容器,把docker中的php配置文件和本地的php配置完成关联

1)创建一个临时的php-fpm容器,生成配置文件

 docker run --name php-fpm -v /devlops/php:/www/myphp -d 38f2b691dcb8

2)把php-fpm中的配置文件复制到本地目录,包含php.ini 和www.conf www.conf

docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf /docker/php/conf/www.conf

php.ini

docker cp php-fpm:/usr/local/etc/php/php.ini-production /docker/php/conf/php.ini

3)删除临时的php-fpm容器,重新生成一个php74的容器,并挂载已经复制出来的php配置文件

docker run --name php74 -p 9000:9000 -d -v d:/docker/php/www:/var/www/html -v d:/docker/php/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf -v d:/docker/php/conf/php.ini:/usr/local/etc/php/php.ini --net mynet php:7.4-fpm

10.创建nginx配置文件

d:/docker/nginx/conf/default.conf 创建default.conf文件

文件内容:

server {
        listen       80;
        server_name  localhost;
        root /var/www/html;
        charset utf-8;

        access_log  /var/log/nginx/access.log  main;
        error_log  /var/log/nginx/error.log;

        location / {
            index  index.html index.htm index.php;
            try_files $uri $uri/ /index.php?$query_string;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location ~ \.php$ {
            fastcgi_index index.php;
            #php-fpm容器名:端口号
            fastcgi_pass   php74:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include       fastcgi_params;
        }

        location ~ /\.ht {
            deny  all;
        }
}

9.测试

在我们之前创建的/docker/nginx/www/myphp文件夹中创建一个index.php

    <?php 

    echo phpinfo(); 

    ?>

10.安装mysql

安装MYSQL容器命令:

docker run --name mysql --restart=always --privileged=true -p 3306:3306 -v d:/devops/mysql/conf:/etc/mysql/conf.d -v d:/devops/mysql/data:/var/lib/mysql -v d:/devops/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=root --net mynet -d mysql

命令相关说明:

docker run --name mysql 
--restart=always ( Docker 重启时容器也跟随启动)
--privileged=true (Docker 为容易内的 root 用户赋予真正的 root 权限,不然会提示 log 目录权限不足)
-p 3306:3306 
-v /docker/mysql/conf:/etc/mysql/conf.d (将配置目录挂载到容器内的配置目录)
-v /docker/mysql/data:/var/lib/mysql (将数据存储目录挂载到容器内的出局存储目录)
-v /docker/mysql/log:/var/log/mysql (将日志目录挂载到容器内的日志目录)
-e MYSQL_ROOT_PASSWORD=root 
--net mynet (自己创建的docker网络) 
-d mysql

11.安装redis

安装redis容器命令:

docker run --name redis -d -p 6379:6379 redis

评论列表

还没有人发表评论

发表评论 取消回复