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
相關文章
相關標籤/搜索