一、Docker 容器的安裝
# mac 環境安裝
$ brew cask install docker
# centos7 環境安裝
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# Ubuntu 環境安裝
$ wget -qO- https://get.docker.com/ | sh 獲取最新版本的 Docker 安裝包
$ sudo service docker start 啟動服務
docker rm `docker ps -aq` 清除容器與映象關係
二、操作命令
1、docker images 檢視當前存放映象
2、docker ps 檢視當前執行的容器
3、docker ps --all 檢視當前所有容器
4、docker rm <容器名稱> 刪除停止的容器
5、docker rmi <映象名稱> 刪除停止的映象
6、docker run -d -p 5000:5000 training/webapp python app.py 執行一個新的容器
-d 容器後臺執行
-p 5000:5000 指定埠對映到本機
7、docker port <容器名稱> 檢視容器埠號
三、使用docker搭建 lnmp 開發環境
# 目錄結構
.
├── data
│ ├── mysql
│ └── redis
│ └── dump.rdb
├── dockerfile
│ ├── docker-compose.yml
│ ├── go
│ ├── mysql
│ ├── nginx
│ │ ├── Dockerfile
│ │ ├── conf.d
│ │ │ ├── default.conf
│ │ │ └── laravel.conf
│ │ └── nginx.conf
│ ├── php
│ │ ├── Dockerfile
│ │ ├── php-fpm.conf
│ │ ├── php.ini
│ │ └── pkg
│ │ └── redis.tgz
│ └── redis
│ └── Dockerfile
├── logs
│ ├── nginx
│ │ └── error.log
│ └── php-fpm
└── website
四、先安裝nginx
建立nginx
的dockerfile
檔案
# 進入到 dockerfile/nginx 建立Dockerfile檔案
FROM nginx # 指定映象 預設使用官方映象
MAINTAINER zhouyao "994914376@qq.com" # 作者
ENV TZ=Asia/Shanghai # 宣告變數
# 更改時間為宿主機時間
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
五、安裝php-fpm
建立php
的dockerfile
檔案
# 進入到 dockerfile/php 建立Dockerfile檔案
FROM php:7.2-fpm # 指定php的版本
MAINTAINER zhouyao "994914376@qq.com" # 指定作者
# 設定時區
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 更新安裝依賴包和 PHP 核心擴充套件
RUN apt-get update && apt-get install -y \
git \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install opcache \
&& docker-php-ext-install mysqli \
&& rm -r /var/lib/apt/lists/*
# 安裝 redis 擴充套件
COPY ./pkg/redis.tgz ./home/redis.tgz # 複製宿主機安裝包到容器
# 安裝PECL擴充 這裡我們安裝的是redis
RUN pecl install /home/redis.tgz && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
# 安裝composer
ENV COMPOSER_HOME /root/composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ENV PATH $COMPOSER_HOME/vendor/bin:$PATH
# 刪除安裝包
RUN rm -f /home/redis.tgz
# 遠端連線時進入的預設目錄
WORKDIR /data
# 修改使用者賬號資訊
RUN usermod -u 1000 www-data
六、安裝redis
建立redis
的dockerfile
檔案
# 進入到 dockerfile/redis 建立Dockerfile檔案
FROM redis:5.0 # 指定軟體版本
MAINTAINER zhouyao "994914376@qq.com"
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
七、安裝mysql
建立mysql
的dockerfile
檔案
# 進入到 dockerfile/mysql 建立Dockerfile檔案
FROM mysql:5.7 # 指定mysql的版本
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
八、上面的Dockerfile
建立完畢我們建立docker-compose.yml
檔案
# 進入到dockerfile目錄建立docker-compose.yml檔案
version: "3"
services:
# php-fpm 服務
php-fpm:
build: ./php # 執行dockerfile檔案配置
links: # 連線其它容器器
- redis:redis
- mysql:mysql
ports: # 暴露埠到宿主機
- "9000:9000"
volumes: # 掛載目錄 把宿主機目錄目錄掛載到容器中持久化儲存
- ../website:/data/www:rw
- ./php/php.ini:/usr/local/etc/php/php.ini:ro
- ./php/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro
- ../logs/php-fpm:/var/log/php-fpm:rw
restart: always
command: php-fpm # 啟動時執行的命令
# nginx 服務
nginx:
build: ./nginx # 執行dockerfile檔案配置
depends_on: # 優先順序 先啟動載入php-fpm容器
- php-fpm
links: # 連線其它容器
- php-fpm:php-fpm
volumes: # 掛載目錄
- ../website:/data/www:rw
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ../logs/nginx:/var/log/nginx
ports: // 暴露埠
- "80:80"
- "8080:8080"
- "443:443"
restart: always
command: nginx -g 'daemon off;' # 執行時執行,必須要讓pid = 1的程式為nginx不然容器會自動退出
# redis 服務
redis:
build: ./redis
ports:
- "6379:6379"
volumes:
- ../data/redis:/data
restart: always
# mysql 服務
mysql:
build: ./mysql
ports:
- "3306:3306"
volumes:
- ../data/mysql:/var/lib/mysql:rw
- ../logs/mysql:/var/lib/mysql-logs:rw
- ./mysql/conf.d:/etc/mysql/conf.d:ro
environment: # 設定資料庫密碼資訊
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: goframe
MYSQL_USER: root
MYSQL_PASSWORD: 123456
restart: always
command: "--character-set-server=utf8"
注:宿主機執行 composer
命令
# -w /data/www/personal/zhubao 該地址為容器專案地址
docker-compose run --rm -w /data/www/personal/zhubao php-fpm composer require overtrue/laravel-wechat
最後奉上倉庫地址
https://github.com/zhouyaozhouyao/docker-l...
本作品採用《CC 協議》,轉載必須註明作者和本文連結