Yan.G WebServer Dev Engineer

使用 docker 集成开发环境

2019-09-16

本文旨在快速搭建开发环境,并减少后期因应用版本变更的维护成本,和公共配置文件的通用性, 避免相同配置每个开发人员都去实现一次

  • 项目地址 https://github.com/nelsonking/docker_with_backend

项目目录

bin/     # 常用命令
install/ # 安装命令 
mongo/   # mongo 配置文件 和 库文件
mysql/   # mysql 配置 和 数据库文件
nginx/   # nginx 配置文件
README.MD  
redis/   # redis 的配置文件和持久化文件
source/  # 安装源文件 这里统一放到百度云地址为  https://pan.baidu.com/s/1VNa0FWvl-CjMLyzZt_jUpg  提取码: remq 
  • 其中配置文件已经归入版本控制,数据库文件等 容器运行产生的文件全部忽略

开启安装

首先下载安装windows docker 可通过官网下载,也可通过下文提供的百度网盘下载。 安装后,docker 目前的版本会自动配置 windows 的虚拟机 (会要求重启),安装后,开启docker 的目录共享

鼠标右击 docker 右下角角标 
-> settings 
-> Shared Drives 
-> 勾选需要共享的目录 (比如配置和项目都放到 F 盘,那么我就勾选 F)
-> Apply

载入镜像

方式分为两种,

  • 运行 docker pull 速度快的同学可以直接 运行下列命令
    docker pull php:7.1-fpm
    docker pull nginx:latest
    docker pull mongo:latest
    docker pull mysql:5.7
    docker pull centos:latest
    docker pull redis:3.2
    
  • 运行速度不快的,可通过这个地址下载所有上诉镜像
    https://pan.baidu.com/s/1VNa0FWvl-CjMLyzZt_jUpg  提取码: remq 
    # 所有文件下载完毕后统一放入 source 目录下,然后执行下面的命令
    ./install/load_images.sh
    
  • 上述命令执行完毕后会出现下列情况,就可以继续往下面走了
    $ $ docker  images
    php                 7.1-fpm             9e5aa36761ac        13 days ago         392MB
    nginx               latest              5a3221f0137b        4 weeks ago         126MB
    mongo               latest              cdc6740b66a7        4 weeks ago         361MB
    mysql               5.7                 e1e1680ac726        4 weeks ago         373MB
    centos              latest              9f38484d220f        6 months ago        202MB
    redis               3.2                 87856cc39862        11 months ago       76MB
    

安装应用

  • 我们以php 和 nginx 的安装为例
cd install
cat php_nginx.sh
#!/bin/bash
source ./common.sh

# 检查容器是否安装,并删除已安装的容器
check_container php
check_container nginx

# 代码共享配置 (需要变更为真实环境)
code_dir="D:/Code"
code_dir_map="-v $code_dir:/web"

# nginx 共享配置 (需要变更为真实环境)
nginx_config="D:/Code/docker/nginx/nginx.conf"
nginx_config_d="D:/Code/docker/nginx/conf.d"

nginx_config_map="-v $nginx_config:/etc/nginx/nginx.conf -v $nginx_config_d:/etc/nginx/conf.d"
nginx_port_map="-p 80:80 -p 443:443"

# 安装php
$docker_run php $code_dir_map $use_network_alias php php:7.1-fpm

# 安装nginx
$docker_run nginx $code_dir_map $nginx_config_map $nginx_port_map $use_network_alias nginx nginx:latest
  • 这里我们只需要修改 code_dir nginx_config nginx_config_d 这三个变量为本机配置即可

  • 然后执行 php_nginx.sh 即可。
    ./php_nginx.sh
    network sharenetwork has been created
    container php will be create
    container nginx will be create
    6f99a6d80740da9b56ab22bd4074ff8dd138287982524cddb49ff1492278b7a9
    1b2211ef8dec084ddcd942e107260b3a18083ff811a6a83093c8ffcff0eb383c
    
  • 按上面命令显示结果,那么php 和 nginx 就已经安装完毕了,可通过命令查看详情
    $ ../bin/docker_info.sh
    CONTAINER ID                                                       IMAGE               COMMAND                           CREATED              STATUS              PORTS                                      NAMES
    1b2211ef8dec084ddcd942e107260b3a18083ff811a6a83093c8ffcff0eb383c   nginx:latest        "nginx -g 'daemon off;'"          About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx
    6f99a6d80740da9b56ab22bd4074ff8dd138287982524cddb49ff1492278b7a9   php:7.1-fpm         "docker-php-entrypoint php-fpm"   About a minute ago   Up About a minute   9000/tcp                                   php
    
  • 镜像包含了 nginx php redis mongo mysql centos,可按照自己的需求去扩展

Content