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 存取 MySQL 数据库的一个例子
Oct 09 PHP
PHP操作xml代码
Jun 17 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
ThinkPHP单字母函数(快捷方法)使用总结
Jul 23 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
PHP中Array相关函数简介
Jul 03 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
PHP封装的简单连接MongoDB类示例
Feb 13 PHP
详解php中curl返回false的解决办法
Mar 18 PHP
php弹出提示框的是实例写法
Sep 26 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
python通过floor函数舍弃小数位的方法
2015/03/17 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
教育技术职业规划范文
2014/03/04 职场文书
企业元宵节主持词
2014/03/25 职场文书
工作建议书范文
2014/05/13 职场文书
会计求职信范文
2014/05/24 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
公司会议开幕词
2015/01/29 职场文书
大学生自我评价范文
2015/03/03 职场文书
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android