内容简介:上篇文章中,讲到了如何搭建docker下的服务mysql,gitlab,nexus。其他例如npm/maven/java环境安装则不再讲解。本篇会开始正式使用Walle作为持续集成方案,进行小型服务的快速构建发布。Walle官网:walle 让用户代码发布终于可以不只能选择 jenkins!支持各种web代码发布,php、java、python、go等代码的发布、回滚可以通过web来一键完成。walle 一个可自由配置项目,更人性化,高颜值,支持git、多用户、多语言、多项目、多环境同时部署的开源上线部署系
上篇文章中,讲到了如何搭建 docker 下的服务mysql,gitlab,nexus。其他例如npm/maven/java环境安装则不再讲解。本篇会开始正式使用Walle作为持续集成方案,进行小型服务的快速构建发布。
Walle官网: http://www.walle-web.io/
基本概述
walle 让用户代码发布终于可以不只能选择 jenkins!支持各种web代码发布,php、 java 、 python 、 go 等代码的发布、回滚可以通过web来一键完成。walle 一个可自由配置项目,更人性化,高颜值,支持git、多用户、多语言、多项目、多环境同时部署的开源上线部署系统。
宿主机、目标机群、操作用户
权限模型
信任关系
构建流程
Docker安装Walle
Docker安装
Centos系统
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系统
https://docs.docker.com/docke...
Windows
https://docs.docker.com/docke...Python安装
请安装至少版本2.7.15及以上,版本3以下。(推荐2.7.15,不然会出现各种莫名其妙的问题,官方未解释原因)
Docker-compose 安装
pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple/
如果pip不存在,可以尝试
sudo yum install python-pip sudo pip install --upgrade pip
创建Walle容器编排配置
编辑 mysql 配置文件: cd ${walle运行目录} && vim docker-compose.yml
# 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.yml
# 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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 实战 Prometheus 搭建监控系统
- go micro实战01:快速搭建服务
- Vue最全实战教程系列(1): 环境搭建
- 实战:用Microsoft 365搭建零信任网络
- 「实战」搭建完整的IM(即时通讯)应用(1)
- 「实战」搭建完整的IM(即时通讯)应用(2)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。