Docker 关于 docker 部署 walle 平台

昨天有雨 · 2020年08月19日 · 最后由 昨天有雨 回复于 2020年08月21日 · 2112 次阅读

前几天在微博上看到一个博主推荐了 walle 平台,自己部署好后把过程总了下分享给大家.还是第一次体验 docker ,walle 平台也只是部署了下.还没有用过,后续争取体验后继续更新,欢迎大家讨论交流

一.docker 环境配置

参考文档

1-1 系统:CentOS 7(64 位)
1-2 安装 Devices-
sudo yum install -y device-mapper
sudo modprobe dm_mod
1-3 下载 gcc 相关
yum -y install gcc
yum -y install gcc-c++
1-4 卸载旧版本
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
1-5 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
1-6 设置 stable 镜像仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
或
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1-7 更新 yum 软件包索引
yum makecache fast
1-8 安装 docker
安装指定版本
yum list docker-ce.x86_64  --showduplicates | sort -r    #从高到低列出Docker-ce的版本
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 例如:
yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io


安装最新版本
yum -y install docker-ce
1-9 启动 docker
systemctl start docker

查看docker版本
docker version
1-10 删除 docker
1.列出docker包的具体的名字
$ sudo yum list  installed | grep docker
containerd.io.x86_64                 1.2.4-3.1.el7 
docker-ce.x86_64                     3:18.09.3-3.el7
docker-ce-cli.x86_64                 1:18.09.3-3.el7

2.删除docker
yum -y remove containerd.io.x86_64 \
                     docker-ce.x86_64 \
                     docker-ce-cli.x86_64 

3.直接删除docker
sudo yum remove docker \
                  docker-io \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

4.清除镜像和容器文件
sudo rm -rf /var/lib/docker
1-11 镜像加速
vi /etc/docker/daemon.json 
{"registry-mirrors":["https://hub-mirror.c.163.com"]} 

配置成功后,CentOS 6.5 重启
service docker restart

配置成功后,CentOS7重启
systemctl daemon-reload     #重启加速配置文件
systemctl restart docker    #重启docker后台服务

二.部署 walle

官方文档

2-1 安装 pip
sudo yum install python-pip 
sudo pip install --upgrade pip
2-2 安装 docker-compose
pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple/
2-3 在 docker 安装目录 /var/lib/docker 下新增两个配置文件
vim walle.env

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


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
2-4 启动镜像
docker-compose up -d && docker-compose logs -f docker-compose.yml
2-5 初始化账号及常规操作
超管: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
2-6 问题汇总
a.服务启动后mysql报错,web页面可以打开但是登录接口500,数据库可以连接但是库里没有表

出现的原因:部署时因为和服务器上的mysql有端口号冲突,所以修改过 docker-compose.yml 文件里的 mysql端口号导致的

解决办法: 目前没有找到较好的解决方法,只能让walle平台占用3306端口
附言 1  ·  2020年09月07日
a.mysql报错的问题已经搞清楚了

最新解决办法: 把walle.env文件中的端口号改成3306即可,之前解决不了的原因还是自己对docker容器之间的互相访问方式不太了解.之前以为python-web容器访问mysql容器是先把请求打到docker宿主机端口,然后再由宿主机端口映射到mysql容器访问数据库.看过 <<深入浅出Docker>> 后才知道,原来在编排容器的时候 mysql和python-web两个容器如果共用一个networks,是直接访问对方容器端口的.之前在docker-compose文件中改映射端口的时候因为有了之前错误的想法所以把walle.env文件里的端口改成容器映射到宿主机的端口了.所以才有了上述问题.
附言 2  ·  2020年08月21日
问题汇总补充

在项目管理中新建项目时遇到两个问题

b.填好各种参数,新建成功后检测时没有通过

出现原因:是因为walle部署的宿主机需要访问部署的目标服务器,可是新建项目的配置时没又让填写任何 用户名和 密码.需要设置下免密登录.

c.新建上线单部署时分支和版本一直loading 加载不到数据

出现原因:项目管理-新建项目时只填写了gitlab代码地址,没有配置用户名和密码.解决方法有两个,一种是项目配置填写gitlab地址时选择http的形式将用户名和密码添加在url中,另一种是gitlab中配置walle宿主机的免密部署秘钥
共收到 2 条回复 时间 点赞

1-10 删除 docker

不是把 docker 删除了吗,怎么用 docker 部署 walle ?

孓晓 回复

帖子是从有道云笔记里复制过来的, 1-10 和 1-11 是当时自己做的记录

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册