Mac和CentOS下使用Docker - LNMP筆記

mac下邊安裝docker,地址是 https://download.docker.com/mac/stable/Docker.dmg
在命令行下用 brew install git 進行安裝,也可以參考下面的文檔進行安裝:

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

CentOS下安裝就簡單了,直接使用yum安裝docker和docker-compose即可,如遇到缺少某些工具包,直接yum安裝一下!

 

* 創建一個項目的目錄,做爲項目根目錄,如/site/

* 在項目根目錄下創建docker目錄,存放不同環境下的配置文件及各server的配置;

如:

conf:開發環境下配置文件存放目錄      

conf-online:線上環境   

conf-test:測試環境   

php.dockerfile : Docker下的PHP安裝配置項;內容如下:(以下注釋的兩行附近上下兩行可替換,根據當前系統環境不同,如編譯安裝時報錯,可嘗試替換一下再試)

FROM php:7.1-fpm
MAINTAINER aggrelxf <[email protected]>

# 更換成國內快的 apt-get 源
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak \
    && echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" > /etc/apt/sources.list \
    && echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >> /etc/apt/sources.list \
    && echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list \
    && echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >> /etc/apt/sources.list

# RUN apt-get autoremove && apt-get update -y && apt-get upgrade -y && apt-get install -y build-essential libpq-dev nodejs
RUN apt-get autoremove && apt-get update -y && apt-get upgrade -y

# RUN apt-get install -y libz-dev zlib1g=1:1.2.8.dfsg-2+b1 libpng12-dev libjpeg-dev libfreetype6-dev \
RUN apt-get install -y --allow-downgrades libz-dev zlib1g=1:1.2.8.dfsg-2+b1 libpng12-dev libjpeg-dev libfreetype6-dev \
  && rm -rf /var/lib/apt/lists/* \
  && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ \
    --with-png-dir=/usr --with-jpeg-dir=/usr \
  && docker-php-ext-install gd mysqli pdo_mysql zip opcache bcmath
 
# 安裝 redis 擴展 
ENV PHPREDIS_VERSION 4.0.2 
RUN curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/$PHPREDIS_VERSION.tar.gz \ 
    && tar xfz /tmp/redis.tar.gz \ 
    && rm -r /tmp/redis.tar.gz \ 
    && mkdir -p /usr/src/php/ext \ 
    && mv phpredis-$PHPREDIS_VERSION /usr/src/php/ext/redis \ 
    && docker-php-ext-install redis 
 
RUN rm -rf /usr/src/php

php.ini  :PHP配置文件    

php.log :日誌      

web.conf:nginx配置

* 根目錄下創建docker-compose.yml文件,編輯docker中的所有server使用的配置,內容如下:

因項目使用的是阿里雲的mysql和redis,因此以下未安裝兩項服務,如需安裝,將下邊註釋去掉即可;

version: '3'

services:
  web:
    image: nginx:latest
    restart: always
    ports:
      - 5880:80
      - 3390:80
    volumes:
      - ./:/site
      - ./docker/web.conf:/etc/nginx/conf.d/default.conf
    networks:
      - local
  php:
    build:
      context: ./docker
      dockerfile: php.dockerfile
    restart: always
    volumes:
      - ./:/site
      - ./docker/php.ini:/usr/local/etc/php/conf.d/php.ini
      - ./docker/php.log:/usr/local/etc/php/php.log
    networks:
      - local
    env_file: .env

 
  # redis: 
  #  image: redis:4.0.2 
  #   restart: always 
  #   command: ["redis-server", "--appendonly", "yes"] 
  #   ports: 
  #     - 5879:6379 
  #   volumes: 
  #     - ./docker-data/redis:/var/lib/redis 
  #   hostname: redis 
  #   networks: 
  #     - local 
 
  # mysql: 
  #   image: mysql:5.7 
  #   restart: always 
  #   command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 
  #   environment: 
  #     MYSQL_DATABASE: thinkcmf5 
  #     MYSQL_ROOT_PASSWORD: 111111 
  #   volumes: 
  #     - ./docker-data/mysql:/var/lib/mysql 
  #     - ./sql:/sql 
  #   ports: 
  #     - 5806:3306 
  #   networks: 
  #     - local 
 
networks: 
  local: 
    driver: bridge

 

以上配置完成,在項目的根目錄,運行 docker-compose up -d,會自動下載、build、安裝一些東西,不過都是安裝在 docker 自己的緩存裏,docker 會自動管理
運行完 docker-compose up -d 之後,然後就可以開發了,php、mysql、redis、nginx 全部已經運行了
然後訪問 http://localhost:5880/
看到phpinfo界面,就算成功了

 

運行 docker images 可以查看你本機都下載了哪些鏡像
用 docker ps 可以查看當前正在運行的所有容器

* 查看某個容器的日誌信息:docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1
--since : 此參數指定了輸出日誌開始日期,即只輸出指定日期之後的日誌。
-f : 查看實時日誌
-t : 查看日誌產生的日期
-tail=10 : 查看最後的10條日誌。
edu_web_1 : 容器名稱

docker-compose rm : 此命令刪除所有停止中的docker-compose run運行的進程
docker-compose ps : 可看此命令運行的各實例中的進程狀態;如果都是exits 狀態,即可 rm 直接刪除;
docer ps : 查看所有docker各容器進程;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章