DevOps 基於Walle的小型持續集成實戰(四)搭建Walle

上篇文章中,講到了如何搭建docker下的服務mysql,gitlab,nexus。其餘例如npm/maven/java環境安裝則再也不講解。本篇會開始正式使用Walle做爲持續集成方案,進行小型服務的快速構建發佈。

Walle官網:http://www.walle-web.io/php

基本概述

walle 讓用戶代碼發佈終於能夠不僅能選擇 jenkins!支持各類web代碼發佈,php、java、python、go等代碼的發佈、回滾能夠經過web來一鍵完成。walle 一個可自由配置項目,更人性化,高顏值,支持git、多用戶、多語言、多項目、多環境同時部署的開源上線部署系統。

宿主機、目標機羣、操做用戶

clipboard.png

權限模型

clipboard.png

信任關係

clipboard.png

構建流程

clipboard.png

Docker安裝Walle

Docker安裝

Centos系統java

sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce -y
sudo systemctl enable docker
sudo systemctl start docker

Mac系統python

https://docs.docker.com/docke...mysql

Windows
https://docs.docker.com/docke...linux

Python安裝

請安裝至少版本2.7.15及以上,版本3如下。(推薦2.7.15,否則會出現各類莫名其妙的問題,官方未解釋緣由)nginx

Docker-compose 安裝

pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple/git

若是pip不存在,能夠嘗試web

sudo yum install python-pip 
sudo pip install --upgrade pip

建立Walle容器編排配置

編輯mysql配置文件:cd ${walle運行目錄} && vim docker-compose.ymlsql

# Set MySQL/Rails environment
MYSQL_USER=root
MYSQL_PASSWORD=walle
MYSQL_DATABASE=walle
MYSQL_ROOT_PASSWORD=walle
MYSQL_HOST=db
MYSQL_PORT=3306

編輯docker-compose walle配置文件:vim docker-compose.ymldocker

# docker version:  18.06.0+
# docker-compose version: 1.23.2+
# OpenSSL version: OpenSSL 1.1.0h
version: "3.7"
services:
  web:
    image: alenx/walle-web:2.1
    container_name: walle-nginx
    hostname: nginx-web
    ports:
      # 若是宿主機80端口被佔用,可自行修改成其餘port(>=1024)
      # 0.0.0.0:要綁定的宿主機端口:docker容器內端口80
      - "80:80"
    depends_on:
      - python
    networks:
      - walle-net
    restart: always

  python:
    image: alenx/walle-python:2.1
    container_name: walle-python
    hostname: walle-python
    env_file:
      # walle.env需和docker-compose在同級目錄
      - ./walle.env
    command: bash -c "cd /opt/walle_home/ && /bin/bash admin.sh migration &&  python waller.py"
    expose:
      - "5000"
    volumes:
      - /opt/walle_home/plugins/:/opt/walle_home/plugins/
      - /opt/walle_home/codebase/:/opt/walle_home/codebase/
      - /opt/walle_home/logs/:/opt/walle_home/logs/
      - /root/.ssh:/root/.ssh/
    depends_on:
      - db
    networks:
      - walle-net
    restart: always

  db:
    image: mysql
    container_name: walle-mysql
    hostname: walle-mysql
    env_file:
      - ./walle.env
    command: [ '--default-authentication-plugin=mysql_native_password', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
    ports:
      - "3306:3306"
    expose:
      - "3306"
    volumes:
      - /data/walle/mysql:/var/lib/mysql
    networks:
      - walle-net
    restart: always

networks:
  walle-net:
    driver: bridge

docker-compose概要

參考文章: https://blog.csdn.net/u011781...

以上配置文件有如下幾個特色:

  • 基本參數

    • image:docker的鏡像,須要依據該鏡像運行爲容器
    • container_name:容器名稱,中止和啓動容器時使用
    • hostname:機器名稱
    • env_file:環境變量配置文件
    • command:啓動後須要執行的命令
    • ports:映射到宿主機的端口
    • expose:暴露非80的端口
    • vlolumes:映射到宿主機的文件路徑
    • networkks:指定的服務網路
    • restart:無論退出狀態碼是什麼始終重啓容器
  • 一共3個鏡像須要在編排的時候,運行爲容器web,python,db。啓動順序爲db > python > web
  • web存放walle靜態界面,依賴python接口,映射容器端口80到宿主機端口80
  • python存放接口與構建環境,依賴db服務,並映射日誌等內容到宿主機。
  • db存放mysql配置文件,並映射mysql數據文件路徑到宿主機。(防止容器重啓損壞後丟失數據),映射容器端口3306到宿主機端口3306,額外暴露端口3306

Start

一鍵啓動(快速體驗)

docker-compose up -d && docker-compose logs -f

打開瀏覽器localhost:80 (如不想使用80端口,請調整"80:80",改變左側端口號)

初始登陸帳號以下,開啓你的walle 2.0之旅吧:)

角色 帳戶 密碼
超管 super@walle-web.io Walle123
全部者 owner@walle-web.io Walle123
負責人 master@walle-web.io Walle123
開發者 developer@walle-web.io Walle123
訪客 reporter@walle-web.io Walle123

經常使用操做

構建服務

docker-compose build

啓動服務,啓動過程當中能夠直接查看終端日誌,觀察啓動是否成功

docker-compose up

啓動服務在後臺,若是確認部署成功,則可使用此命令,將應用跑在後臺,做用相似 nohup python waller.py &

docker-compose up -d

查看日誌,效果相似 tail -f waller.log

docker-compose logs -f

中止服務,會中止服務的運行,可是不會刪除服務所所依附的網絡,以及存儲等

docker-compose stop

刪除服務,並刪除服務產生的網絡,存儲等,而且會關閉服務的守護

docker-compose down

相關文章
相關標籤/搜索