Docker配置PHP开发环境教程


Posted in PHP onDecember 21, 2016

前言

笔者用的是mac开发,但是mac自带的php功能安装十分不方便,并且和线上的linux开发环境不一致。在没有用docker之前一直用vagrant配置的centos的php开发环境,但是自从有了docker之后,就不再用vagrant了。

配置自己的php镜像

首先在自己的任意一个目录下创建如下三个文件

run.sh

#!/bin/bash
/usr/sbin/php-fpm7.0
/usr/sbin/nginx
tailf /etc/apt/sources.list

sources.list

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

Dockerfile

FROM ubuntu:16.04
# ===========================
# 配置虚拟主机
# -v default:/etc/nginx/sites-enabled/default
# 配置程序目录
# -v web:/var/www/html
# 配置映射端口
# -p 8008:80
# ===========================
MAINTAINER chengtao "751753158@qq.com" 

ADD sources.list /etc/apt/sources.list
ADD run.sh /root/run.sh

RUN chmod +x /root/run.sh
RUN apt-get update 
RUN apt-get install -y php-fpm php-mysql nginx 
RUN sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/' /etc/php/7.0/fpm/php.ini
RUN mkdir -p /run/php/

EXPOSE 80 
CMD ["/bin/bash","/root/run.sh"]

执行命令

docker build -t d1studio:php-base:0.1 .

配置php mysql开发环境

mkdir -p ~/projects/php-app
cd ~/projects/php-app
mkdir mysql
mkdir www

www/index.php

<?php
phpinfo();

nginx.conf

server {
 listen 80 default_server;
 root /var/www/html;
 index index.html index.htm index.php;
 location / {
  try_files $uri $uri/ =404;
 }
 location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 }
}

docker-compose.yml

version: '2'
services:
 mysql:
 image: mysql:5.6
 volumes:
  - ./mysql/:/var/lib/mysql/
 ports:
  - "3307:3306"
 environment:
  - MYSQL_ROOT_PASSWORD=123456
 php-app:
 image: d1studio/php-base:0.1
 ports:
  - "8009:80"
 volumes:
  - ./nginx.conf:/etc/nginx/sites-enabled/default
  - ./www/:/var/www/html/
 links:
  - mysql

开启php的测试项目

#开启
docker-compose up
#关闭
docker-compose down

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
php PDO中文乱码解决办法
Jul 20 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
php网站地图生成类示例
Jan 13 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
php cookie名使用点号(句号)会被转换
Oct 23 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
PHP实现linux命令tail -f
Feb 22 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 PHP
PHP符合PSR编程规范的实例分享
Dec 21 #PHP
利用PHP生成CSV文件简单示例
Dec 21 #PHP
PHP实现支付宝即时到账功能
Dec 21 #PHP
简单实现PHP留言板功能
Dec 21 #PHP
PHP未登录自动跳转到登录页面
Dec 21 #PHP
PHP单例模式详解及实例代码
Dec 21 #PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 #PHP
You might like
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
PHP count()函数讲解
2019/02/03 PHP
纯文字版返回顶端的js代码
2013/08/01 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
python 经典数字滤波实例
2019/12/16 Python
Python list运算操作代码实例解析
2020/01/20 Python
详解Python的三种拷贝方式
2020/02/11 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
你的自行车健身专家:FaFit24
2016/11/16 全球购物
行政副总岗位职责
2014/02/23 职场文书
2014全国两会心得体会
2014/03/17 职场文书
关于保护环境的标语
2014/06/09 职场文书
前台文员岗位职责
2015/02/04 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
python中的sys模块和os模块
2022/03/20 Python