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 服务器配置(使用Apache及IIS两种方法)
Jun 01 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
Php图像处理类代码分享
Jan 19 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
May 04 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
php实现三级级联下拉框
Apr 17 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 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实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
Python 元类使用说明
2009/12/18 Python
python调用fortran模块
2016/04/08 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
python交互模式基础知识点学习
2020/06/18 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
临床护理求职信
2014/04/26 职场文书
出国英文推荐信
2014/05/10 职场文书
领导参观欢迎词
2015/01/26 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript