docker 搭建lnmp开发环境

docker学习心得

前言

耗时一周零三天,终于用docker搭建起本身的开发环境。
详细过程:请参考分解docker在lnmp环境搭建中的做用
localhost
下面说说个人心路历程:(从一个系统提及deepin
Ubuntu16.04用的好好地,忽然看见17.10发布了,界面还挺好看。果断升级为17.10。而后发现,界面看着漂亮,用的时候很难受,快捷键和16.04也不太同样,装的软件各类打不开。通过深思熟虑我就换成deepin,各类常见的软件都能装,好比QQ,微信,搜狗等等,美滋滋。来搭建一下环境lnmp,而后,桌面没了。查了一下资料,说deepin桌面版不能装。心想,弄个虚拟机吧,能够各类折腾,折腾坏了重建就好了。想到最近docker很火,果断入坑。php

做者经历的各类阶段:(各位能够参考,避免浪费时间)

第一阶段:找教程
极客学院这个不错,各类概念讲的很清楚,建议新学者直接通读一遍再动手。还有,不要全看,若是只是想我同样想在本地搭建docker环境。我给你总结几点:html

  1. 了解docker三个概念,镜像,容器,仓库
  2. 掌握这么几个命令和对应命令的经常使用参数:docker run/ps/rm/rmi/start/stop/exec (建立并运行容器/查看运行的容器/删除容器/删除镜像/启动容器/中止容器/容器外进入容器)
  3. 知道Dockerfile是什么?能作什么?我刚开始,想着只用centos官方镜像经过Dockerfile建立出本身的lnmp,想着在Dockerfile里面完成php,mysql,nginx的编译安装,后面发现还不是照着网络上的编译过程各类复制粘贴,还各类报错,本身不会解决,何须本身坑本身。
  4. 知道docker-compose是什么?能作什么?(本身看教程)

第二阶段:安装docker
安装我就不说了,着重说一下docker加速器阿里云加速器mysql

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://4qqg0972.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

第三阶段:学习命令
第四阶段:找别人搭建的lnmp Docker搭建可一键部署的多域名LNMP环境
第五阶段:看完以后满脑壳为何?开始研究,最后质疑别人搭建的
第六阶段:仍是用别人搭建好的(本身搭建不出来)
第七阶段:发现和本身的需求不一致,配置文件对不上
第八阶段:本身搭
第九阶段:以为本身搭建的很好,在这写个教程,哈哈linux

总结:这些阶段是做者真实经历过的,可能还比这个多。做为过来人,我只想说,必定要只作一件事,不要过多的去研究,咱们只是想搭建本地运行环境。nginx

本身搭建docker lnmp 过程:

第一步:docker pull centos # 拉取官方centos镜像
第二步:docker run -it --name 'lnmp-self' centos /bin/bash # 建立并运行容器
第三步:使用lnmp一键安装包
第四步:docker commit -a 'amor' -m 'lnmp' b7515f3e6a82 lnmp:1.4 # 基于已有镜像的容器建立新镜像
第五步:建立Dockerfile进行微调,可能须要安装新软件等
第六步:经过docker-compose 进行管理,开放端口,挂载数据卷(挂载配置,项目目录)web

这样作有如下几点好处:sql

  1. 避免编译安装,下降Dockerfile复杂度,避免学习使用大量的linux命令,避免使用本身不熟悉的镜像
  2. 易理解,易管理,易扩展(都是本身弄得嘛,哈哈)

下面附上本身的Dockerfile,docker-compose内容,请在第五步和第六步以后参考
Dockerfiledocker

FROM lnmp:1.4
MAINTAINER amor (zhushaolong@ydsdnet.com)
# ssh
RUN yum install openssh-server -y
RUN mkdir -p /data/website/
CMD ["lnmp", "start"]

docker-composeshell

lnmp:
  build: .
  ports:
    - "80:80"
    - "443:443"
    - "22:22"
  volumes:
    # nginx 配置文件夹
    - ./conf/nginx/:/usr/local/nginx/conf/
    # mysql 配置文件
    - ./conf/mysql/my.cnf:/etc/my.cnf:rw
    # php配置文件
    - ./conf/php/:/usr/local/php/etc/
    # 项目目录
    - /data/Nutcloud/Ubuntu/website/:/data/website/
  tty: true

目录结构(仅供参考)json

.
├── conf
│   ├── mysql
│   ├── nginx
│   └── php
├── docker-compose.yml
└── Dockerfile
相关文章
相关标签/搜索