基于Docker搭建PHP+Nginx+MySQL开发环境(简易搭建)

基于Docker搭建PHP+Nginx+MySQL开发环境

使用 Homebrew 安装
$ brew install --cask --appdir=/Applications docker

==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:          # 输入 macOS 密码
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺  docker was successfully installed!

在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标。

手动安装下载

不使用Homebrew 安装docker,可以在下方链接手动下载安装
www.docker.com/get-started

Docker Desktop下载地址

在使用docker前多多少少都会了解一些docker是什么,做什么用的。

 Docker的应用场景:
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

关于docker的日常开发应用到服务部署应用(k8s部署docker)等。上面解释的几句也是给不了定义的,大家还是要从官方文档多去深入学习。( docs.docker.com/


开始搭建

👇🏻👇🏻👇🏻

接下来在docker中搭建环境并且运行,本次运行使用的是docker-compose为例,docker run方式可参考官方文档

docker-compose参考地址:
docs.docker.com/compose/
docker run参考地址:docs.docker.com/engine/reference/c...

  1. 拉取代码
//把项目克隆到本地
git clone https://github.com/mayjiangfei/macdoc.git

个人建议直接下载zip
github.com/mayjiangfei/macdoc/arch...

  1. .env配置

在bin目录创建 .env 文件添加以下内容

RUN_MODE_DEBUG='debug'
RUN_MODE_ALL='all'

#所有项目path
SERVICE_PROJECT_PATH=''

#NGINX
NGINX_IMAGE='nginx:1.19'
NGINX_CONFD='./nginx/config/conf.d'
NGINX_CONF='./nginx/config/nginx.conf'
NGINX_LOG='./nginx/log'

#PHP
SERVICE_PHP1_IMAGE='wangjiangfei/php-fpm-7.3:v1.0'
SERVICE_PHP1_INI='./php/config/php.ini'
SERVICE_PHP1_TMP='./php/tmp'
SERVICE_PHP1_LOG='./php/log'

#mysql
MYSQL_IMAGE='docker.io/mysql:5.7.35'
MYSQL_DB='./mysql/db'
MYSQL_CNF='./mysql/conf/my.cnf'
MYSQL_INIT='./mysql/init'
MYSQL_ROOT_PASSWORD='123456'

.env文件 SERVICE_PROJECT_PATH 参数 需要替换为自己本地存放项目的地址。

  1. nginx配置

/bin/nginx/config/nginx.conf中最后一行:include /etc/nginx/conf.d/*.conf;

所以自己在本地 /docker-dev/bin/nginx/config 路径创建一个conf.d的配置文件夹。下面给出一个default.conf文件参考

server {
    listen       80;
    listen  [::]:80;
    server_name  www.default.com;

  #这里的root地址要写容器内项目入口文件地址。
    root           /php/项目名称/public;  
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
        access_log  /var/log/nginx/admin-center.log post_log;
    }

    location / {
         index  index.php index.html index.htm;
         if (!-e $request_filename){
             rewrite (.*) /index.php;
         }
    }
}
  1. 如何启动和进入容器。举例:bash ./sh/start-docker.sh (在docker-dev根目录运行即可)
    start-docker.sh 运行docker容器
    stop-docker.sh  停止....
    php.sh          进入php容器
    nginx.sh        进入nginx容器
  1. 本地与容器内映射关系
/bin 目录中 **docker-compose.yml** 文件中查看文件映射关系(docker面板看方便)
在这里nginx的端口映射我是8080:80,你们自己可修改为80:80

6.关于项目的composer install

假设你在app的目录拉取下来一份laravel项目要开发,这时候需要用composer install安装依赖包

1.运行php.sh进入到php容器,并且进入到/php目录下
bash ./sh/php.sh
cd /php

2.查看/php这个目录就会有你拉取的项目,进入到你的项目中执行composer install即可(docker中自有composer,不必在本地倒腾)

环境到此就运行起来了,大家在运行过程中遇到什么问题可以提出。我难免会遗漏一些东西。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Reality
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1
playmaker
2年前 评论
飞飞鱼 (楼主) 2年前
playmaker (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!