Skip to content

专为新手定制的docker+PHP+Mysql+Nginx开发环境

License

Notifications You must be signed in to change notification settings

youshengyouse/dnmp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel+Vue开发前后端分离网站

——DNMP开发环境搭建(Docker + Nginx + MySQL5.7 + PHP7.2(预装了 composer) + Redis)

laravel 官方推荐的使用homesteadvalet来搭建开发环境,但基于 docker 搭建开发环境更方便。 laravel学习请加 QQ: 2922800186,vue学习请加QQ: 3180555323

本架构文件适用于Windows、Linux、MacOs

本教程配套视频

GitHub 地址 Gitee 地址

laravel和vue珠联璧合

一.准备工作

  1. 编辑器选择,php建议使用phpstorm,js/css/html等使用vscode

  2. 软件安装

  3. clone项目:

    $ git clone [email protected]:advance/dnmp.git
  4. 如果不是root用户,还需将当前用户加入docker用户组:

    $ sudo gpasswd -a ${USER} docker
    
  5. 拷贝并命名配置文件(为了统一,windows 用户请在 git bash 下工作),启动:

    $ cd dnmp
    $ docker-compose up -d s1 s2 s3 s4 s5
    # 根据需要启动指定服务,这5个服务第一次从镜像构建到容器运行约耗时9分钟
    # 默认安装了5个常用服务: nginx为s1, php为s2,mysql为s3, phpmyadmin为s4,redis为s5
    # .env,docker-compose.yml修改得up -d相应服务就行,如果Dockerfile有修改,请带参考--build
    # 如果只是服务的配置文件进行了修改,如nginx的nginx.conf修改了,请进入容器启动相应服务,如$ docker exec -it s1 nginx -s reload
  6. 在物理理(宿主机)浏览器中访问:

二: PHP

2.1 安装扩展

PHP 的很多功能都是通过扩展实现,而安装扩展较费时间,默认除了 php 内置扩展外,只安装了pdo_mysql,mysqli,mbstring,gd,curl,opcache,想安装其它扩展,请修改.env 文件

PHP_EXTENSIONS=pdo_mysql,opcache,redis       # 扩展以英文逗号隔开

然后重新构建 php 镜像。

docker-compose build s2

2.2 使用 composer 安装依赖

docker exec -it c2 sh
cd /www/localhost
composer update

三:mysql

mysql 数据库放在宿主机上的,没有在容器中,方便管理,第一次启动后,文件夹dnmp\data\mysql5的内容如下

mysql

四:Nginx

  1. 修改host文件,增加如 127.0.0.1 01.laravel.bendi
  2. 配置nginx,增加配置文件 dnmp/services/nginx/conf/sites/laravel.conf,后重启nginx,docker exec -it s1 nginx -s reload

五:管理命令

5.1 服务器启动和构建命令

如需管理服务,请在命令后面加上服务器名称,例如:

$ docker-compose up                 # 创建并且启动所有容器
$ docker-compose up -d              # 创建并且后台运行方式启动所有容器
$ docker-compose up s1 s2 s3        # 创建并且启动nginx、php、mysql的多个容器
$ docker-compose up -d s1 s2 s3     # 创建并且已后台运行的方式启动nginx、php、mysql容器
$ docker-compose start s2           # 启动服务
$ docker-compose stop s2            # 停止服务
$ docker-compose restart s2         # 重启服务
$ docker-compose build s2           # 构建或者重新构建服务
$ docker-compose rm s2              # 删除并且停止php容器
$ docker-compose down               # 停止并删除容器,网络,图像和挂载卷

# 当php.ini修改了,得 docker-compose restart s2
# 当nginx.conf修改了,得docker-compose restart s1
# 当docker-compose.yml中哪个服务修改了,得docker-compose up -d 修改的服务名
# 当Dockerfile修改了,得docker-compose up -d --build 修改的服务名

5.2 添加快捷命令

为了提高效率,对于使用频率较高的命令,写成别名的形式,打开~/.bashrc或者~/.zshrc文件,加上:

alias d1='docker exec -it c1 sh'
alias d2='docker exec -it c2 sh'   # 如果想进入php服务器,命令行输入 d2 就行
alias d3='docker exec -it c3 bash'
alias d5='docker exec -it c5 sh'
alias delc='docker rm -f `docker ps -aq`'       # 删除所有容器
alias deli='docker rmi -f `docker images -aq`'  # 删除所有镜像
alias dc12345='docker-compose up -d s1 s2 s3 s4 s5'  # 删除所有镜像
alias dc123='docker-compose up -d s1 s2 s3'  # 删除所有镜像

常见问题

mysql的root密码问题

如果发现的.env中修改了MYSQL_ROOT_PASSWORD的值,mysql镜像也重新生成了,如果密码仍为修改之前的,那是因为镜像尽管重新生成了,但数据库已储存在宿主机中了,得以原来的密码进入mysql后进行修改就行

Docker 容器时间

容器时间在.env 文件中配置TZ变量,所有支持的时区请看时区列表·维基百科或者PHP 所支持的时区列表·PHP 官网

捐赠

本Docker构建文件填坑,测试,文档编写,视频录制编辑,花了整整两天,你的打赏,是对我最大的鼓励

pay

参考:

License

MIT

About

专为新手定制的docker+PHP+Mysql+Nginx开发环境

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published