简介

简述一下我用docker来配置laravel环境

软件镜像

  • php:7.2-rc-fpm-alpine
  • mysql:5.6
  • nginx:1.12.2-alpine

配置环境

  • Ubuntu:16.04
  • macOS:Sierra

以上两个操作系统我都实验过,均能运行


准备

注意点:要是宿主机上面开着mysql和nginx服务的,请停止服务,要不然两个服务分别占用:3306和80或443端口,使得容器无法启动

service mysql stop
ps -ef|grep nginx
kill pid# nginx 的进程号

配置过程

从github上下载配置文件

git clone https://github.com/daimonster/PHP-env.git

切换版本

git checkout laravel5.5

生成php镜像

cd php && docker build -t dai/php:laravel .

特别要注意的是镜像名字不能随便填,如果想要改成别的名字,一定要记得将docker-compose.yml文件中的镜像的名字改成一样的

顺便介绍一些有用的docker操作:

  • 批量删除所有镜像:docker rmi $(docker images -q)
  • 批量停止所有容器:docker stop $(docker ps -aq)
  • 批量删除所有容器:docker rm $(docker ps -aq)

运行docker-composer

docker-compose.yml内容

version: "3"
services:
nginx:
image: nginx:1.12.2-alpine
ports:
#改成127.0.10.10这样不会与localhost冲突
- "127.0.10.10:80:80"
- "127.0.10.10:443:443"
volumes:
- ~/Git-Documents:/home/code:rw # ~/Git-Documents 是我自己的存放代码的目录,需要改成自身存放代码的地方
- ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro#配置nginx
- ./conf/nginx/vhost:/etc/nginx/conf.d:ro#配置nginx
- ./log/nginx:/var/log/nginx:rw
networks:
- code-network php:
image: dai/php:laravel
volumes:
- ~/Git-Documents:/home/code:rw # 这里同上
- ./conf/php/php.ini-development:/usr/local/etc/php/php.ini:ro # 配置php
networks:
- code-network
mysql:
image: mysql:5.6
ports:
- "3310:3306"
volumes:
- ./conf/mysql/my.cnf:/etc/mysql/my.cnf:ro
- ./data/mysql:/var/lib/mysql:rw
- ./log/mysql:/var/log/mysql:rw
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_USER: "test"
MYSQL_PASSWORD: "test123"
networks:
code-network:
driver: bridge

运行命令:

# 前台运行
docker-composer up
# 后台运行
docker-composer up -d

对php容器进行修改

docker ps查看正在运行中的容器,然后进入php容器

docker exec -it [容器ID] sh

创建laravel项目

composer create-project laravel/laravel Laravel --prefer-dist "5.4.*"

给访问用户权限

sudo chown -R :www-data /home/ubuntu/Code/Laravel
sudo chmod -R 775 /home/ubuntu/Code/Laravel/storage

如果能成功显示laravel页面,就OK了

使用docker配置laravel5.5环境的更多相关文章

  1. Mac上通过docker配置PHP开发环境

    这篇文章介绍的内容是关于Mac上通过docker配置PHP开发环境,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 更多PHP相关知识请关注我的专栏PHP​zhuanlan.zhihu. ...

  2. Docker教程:使用docker配置python开发环境

    http://blog.csdn.net/pipisorry/article/details/50808034 Docker的安装和配置 [Docker教程:docker的安装] [Docker教程: ...

  3. 用 Docker 快速配置前端开发环境

    来源于:http://dockone.io/article/1714 今天是你入职第一天. 你起了个大早,洗漱干净带着材料去入职. 签了合同,领了机器,坐到工位,泡一杯袋装红茶,按下开机键,输入密码, ...

  4. 安装docker及配置Android开发环境

    安装docker 官方原来的安装docker的脚本https://get.docker.com/已经过时,现在使用的是https://get.docker.com/,命令如下: curl -s htt ...

  5. 怎么使用Docker搭建PHP开发环境呢?

    在Docker流行之前,要搭建开发环境通常有两种选择:一种是使用wamp.xampp.mamp等集成开发环境安装包,另外一种就是使用普通虚拟机来安装linux服务器,然后通过下载一键安装包(如:lnm ...

  6. Docker集群实验环境布署--swarm【1 架构说明】

    在读完<Docker技术入门与实践>这本书后,基本上已对Docker了有一些入门的理解,以及我们为什么要使用Docker 答:我们发现在实际工作中,通过openstack一旦把一个VM创建 ...

  7. 如何用docker安装laravel开发环境

    如何用docker安装laravel开发环境 看laravel框架的官方文档安装部分时,发现需要安装特别多软件,估计还有许多复杂的配置,官方推荐使用Laravel Homestead虚拟机进行安装,但 ...

  8. selenium结合docker构建分布式测试环境

    selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...

  9. Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现

    前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的 ...

随机推荐

  1. 攻防世界之Web_supersqli

    题目 本题考查sql注入传送门https://www.cnblogs.com/shacker/p/15917173.html 按照SQL注入一步一步执行 发现有2个列 然后用union select联 ...

  2. [ME]不知道第几次学c语言,仍觉得水深莫测

    首先声明这篇东西是个人的碎碎念,没有任何干货. 接下c语言课助教的活儿时还没什么感觉,快要开学了,才感觉到紧张,逼着自己开始看老师发来的课件,说是查错,其实算是自己再好好学一遍,免得到时候面对同学们的 ...

  3. Vue 源码解读(8)—— 编译器 之 解析(下)

    特殊说明 由于文章篇幅限制,所以将 Vue 源码解读(8)-- 编译器 之 解析 拆成了两篇文章,本篇是对 Vue 源码解读(8)-- 编译器 之 解析(上) 的一个补充,所以在阅读时请同时打开 Vu ...

  4. Keepalived非抢占模式配置

    一.前言 HA的实际运行过程中,当主机发生异常,且后期恢复正常后,存在抢占或非抢占两种情况. 结合实际需求,可能有很多用户需要非抢占的HA工作模式.keepalived能够很好的支持这一需求. 二.k ...

  5. EasyUI Datagrid 数据网格

    前端用easyUI开发时,官方给的文档指导太少,网上找的又很慢,因此,我总结了一个后台返回数据后,用easyUI生成表格的方法,可编辑可分页: 1 function paginationTable(i ...

  6. 【C# IO 操作 】Big-endian 和 Little-endian 详解

    首先,认识字节(Byte),计算机中Byte意思为"字节",8个二进制位构成1个"字节(Byte)",即1Byte=8bit,字节是计算机处理数据的基本单位.所 ...

  7. 【windows 访问控制】六、安全标识符(SID Security Identifiers)

    安全标识符(SID Security Identifiers) SID是用来标识安全主体.就是给安全主体一个唯一的ID.用户层面通过用户账户名识别,程序和资源之间通过SID识别. 什么是安全标识符? ...

  8. linux 提权防护

    linux 用户提权 利用系统漏洞或者程序等方面的缺陷使一个低权限用户,获得他们原本不具有的权限或者得到root权限 下面介绍几种可能得到root访问权限的方式 1, 内核开发 防护:及时更新补丁 臭 ...

  9. JS报错:Uncaught TypeError: Cannot set property ‘nTf‘ of undefined

    在使用DataTable时,遇到以下报错: Uncaught TypeError: Cannot set property 'nTf' of undefined ... ... 初步排查后发现是< ...

  10. LeetCode-025-K 个一组翻转链表

    K 个一组翻转链表 题目描述:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保 ...