Docker+Github+Jenkins实现django项目自动化容器部署

一、目标服务器Docker的安装

以Centos7.6安装为例

1、配置阿里的docker-ce仓库

   [root@instance-j69t4n5q ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2、查看可选择的docker-ce版本

   [root@instance-j69t4n5q ~]# yum list docker-ce --showduplicates|sort -r

3、安装指定版本docker

   [root@instance-j69t4n5q bin]# yum -y install docker-ce-18.06.3.ce

4、常用命令

  1)启动、关闭、重启DOCKER

     systemctl enable docker   (开启服务)

     systemctl start docker   (启动服务)  systemctl stop docker   (关动服务)

     systemctl daemon-reload

     systemctl restart docker.service  (重启)

  2)查看版本:docker version

查看详细信息:docker info

 

  3)附:其它可能常用到的命令

拉取docker镜像:docker pull image_name   

Docker Hub 上去下载某个镜像: docker pull centos:latest

运行docker镜像:docker run 名称

查看docker存在的镜像: docker images

查看哪 些容器正在运行: docker ps (docker ps -a 查看所有容器无论是否运行)

 

查看container_id:docker container ls -a

启动docker内的镜像

      docker start container_name/container_id

      docker restart container_name/container_id

      docker stop container_name/container_id

删除镜像

      docker ps

      docker stop container_name/container_id   //停止该docker

      docker rm container_name/container_id       //删除docker容器(docker container ls -a查看ID)

      docker rmi image_name                     //删除镜像 (docker images查看ID)

     docker默认保存目录:var/lib/docker/

进入容器  docker exec -it 容器ID bash

本地向DOCKER内传输文件:docker cp test.html 7033a9d7f7a1:/usr/share/nginx/html

                                                              (文件名     DOCKER ID    目标目录)

 

二、建立dockerfile

在django项目下新建dockerfile文件和docker-compose.yml文件,输入以下内容

 

Dockerfile文件内容:

# 从仓库拉取 带有 python 3.7 的 Alpine Linux 环境

FROM python:3.7-alpine



# 作者信息

LABEL "author"="fc"

LABEL "blog"="https://www.7dy.cn/"

LABEL "E-mail"="xx@qq.com"



# 构建参数,工作目录

ARG work_dir=/www/blog



RUN mkdir -p ${work_dir}

WORKDIR ${work_dir}



# 构建参数,pip源

ARG pip_url=https://pypi.douban.com/simple

ARG pip_host=pypi.douban.com



# 更新 pip 到最新

RUN pip install pip -U -i ${pip_url}



# 将当前目录复制到容器的工作目录

ADD . /${work_dir}



# 安装alpine依赖, system update\ mysqlclient\ system lib\ Pillow\ bash

RUN apk update \

    && apk add --virtual mysqlclient-build gcc python3-dev musl-dev \

    && apk add --no-cache mariadb-dev \

    && apk add --virtual system-build linux-headers libffi-dev \

    && apk add --no-cache jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \

    && apk add --no-cache bash bash-doc bash-completion \

    && pip install pip -U \

    && pip install -r ${work_dir}/requirements.txt -i ${pip_url} --trusted-host ${pip_host}



# 在Alpine上,pip将从源代码构建需要依赖包来install,如mysqlclient需要gcc和musl-dev,因此需要将apk del *-build推迟到安装Python模块之后

RUN apk del mysqlclient-build \

    && apk del system-build

 

docker-compose.yml文件内容,以下的DB密码改为自己的

version: "3"

services:

  app:

    restart: always

    build: .  # '点'代表当前目录

    command: "python3 manage.py runserver 0.0.0.0:8002"

    volumes:  # 挂载当前本地目录至容器/www/blog上

      - .:/www/blog

    ports:

      - "8002:8002"

    depends_on:   # 表示DB容器启动后才会运行

      - db



  db:

    image: mysql:5.7

    volumes:    # 挂载本地目录至容器上

      - "./mysql:/var/lib/mysql"

    ports:

      - "3306:3306"

    restart: always

    environment:  # 定义环境变量MYSQL的ROOT密码和数据库名称

      - MYSQL_ROOT_PASSWORD=密码

      - MYSQL_DATABASE=blog

 

注意以上密码处还需要自己更新下

最后目录结构如下

 

 

 

三、GITHUB的代码发布

1、注册GITHUB账号

    进入 https://github.com注册账号

2、创建库

   注册成功后,点击页面右上角头像个人选项,下拉项选择Your repositories进入以下界面,New创建一个

  

    输入库名,及选择代码公开还是私密,创建完成

 

 

3、客户端的安装与使用

1、进入下载客户端

  windowns  http://msysgit.github.io/

  MACOS http://code.google.com/p/git-osx-installer/downloads/list?can=3

  按提示默认安装即可

 

2、配置GIT

  1)打开进入git bash  首先在本地创建ssh key,

  输入命令:ssh-keygen -t rsa -C "your_email@youremail.com"

  按提示默认回车下一步即可

  成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key

  

  2)打开你GitHub的设置界面,找到SSH and GPG keys这个选项之后,在网页右上角有一个添加新的SSH keys 点击

 

  3)测试,输入  ssh -T git@github.com

   如果是第一次的会提示是否continue,输入yes就会看到:You've successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github

 

 4)接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

$ git config --global user.name "your name"

$ git config --global user.email "your_email@youremail.com"

 

5)进入要上传的仓库目录,右键git bash,添加远程地址:

$ git remote add origin git@github.com:yourName/yourRepo.git

后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote "origin"内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。

 

如果以上报:fatal: not a git repository (or any of the parent directories): .git,则运行以下

创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库。

 

6)上传代码

上传:git add .

暂存修改的文档:git commit -m "代码提交"

传至服务器:git push origin master

查看状态:git status

 

 

4、上传成功后,可以看到最近文件,如下显示

 

 

四、手工部署

 1、在服务器安装Docker-Compose

     Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排

    首先下载docker-compose 

    curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

    给执行权限 chmod +x /usr/local/bin/docker-compose

    最后查看版本:docker-compose version

  

 

2、进入服务器建立相关目录  

  mkdir /web/blog/www

 

3、git下载代码至www目录下

 进入www目录,执行以下

 

基础配置

$git config --global user.name "fcemails"

$git config --global user.email "fcemails@163.com"

初始化配置

$git init

$git remote add origin https://github.com/fcemails/fcblog.git

克隆下载代码

$git clone https://github.com/fcemails/fcblog.git

以后每次更新代码

$git pull https://github.com/fcemails/fcblog.git

 

完成后可看到下载后的代码目录

 

4、使用Docker-Compose启动项目

  执行docker-compose up等待部署docker项目

 

   停止项目:docker-compose down

   后台运行项目:docker-compose up -d

 

5、完成后输入http://IP:8002,如能显示页面则正常

 

如安装过程中docker下载失败,可配置加速(强烈建议配置)

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://2frolikr.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

 

 

五、利用Jenkins实现发布及代码的更新

待整理更新

 

感谢您的阅读,本文由 FC LOG 版权所有。(未允许请勿转载)
从粤A到云L带着大冠去大理,从换车到用车分享
上天入地美国关岛6日游