docker 安装walle2部署项目
  CXp09xev9MeX 2023年11月02日 27 0

项目从git上面拉取代码,然后打包推送到服务器,更新启动服务,开发大神需要ci/cd平台,当前开源的可能walle和蓝鲸cmdb系统比较实用,123正反面选择了walle,据说已经停了好久,不过对于项目来说够用了,开始吧。

前期准备:

cat /etc/redhat-release && uname -a

CentOS Linux release 7.8.2003 (Core)

Linux centos7-1 3.10.0-1127.el7.x86_64 

systemctl stop firewalld && systemctl disable firewalld

echo SELINUX=disabled > /etc/sysconfig/selinux 


cp  /etc/sysctl.conf /etc/sysctl.conf.bak

echo net.ipv4.tcp_syncookies = 1 >> /etc/sysctl.conf

echo net.ipv4.tcp_tw_reuse = 1 >> /etc/sysctl.conf

echo net.ipv4.tcp_tw_recycle = 1 >> /etc/sysctl.conf

echo net.ipv4.tcp_fin_timeout = 10 >> /etc/sysctl.conf

echo net.ipv4.ip_forward = 1  >> /etc/sysctl.conf

sysctl -p

1.Docker 安装:

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce docker-ce-cli containerd.io

systemctl start dockersystemctl enable docker

注意:在安装过程中,也许会遇到Requires: container-selinux >= 2.9 的异常;可以打开Centos下载包中的最新container-selinux包的地址,

然后运行:yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.68-1.el7.noarch.rpm

当然也可以:

curl -fsSL https://get.docker.com -o get-docker.sh

bash  get-docker.sh运行安装docker

2.docker-compose安装


curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

3.创建初始文件:walle.env

在docker-compose.yml同级目录新建出示文件walle.env,连接数据库MYSQL_USER默认使用root,如需使用其他用户,需自建用户更改walle.env文件

vim walle.env

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

MYSQL_ROOT_PASSWORD=walle#123 这个是那个的root密码没明白-_-

4.编写docker-compose的yaml文件

参考:https://walle-web.io/docs/installation_docker.html

# 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

5.一键启动

docker-compose up -d注意:要再yaml目录下,而且env文件也要再此目录下。

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

docker 安装walle2部署项目_docker


docker ps -a #查看镜像

docker-compose down #关闭并删除镜像

docker-compose  start/stop/rm  容器  #打开/停止/删除镜像

常用操作

# 构建服务

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


[root@iZt4niz156030y3q2videiZ bin]# ./docker-compose stop

docker 安装walle2部署项目_docker_02

[root@iZt4niz156030y3q2videiZ bin]# ./docker-compose  start

docker 安装walle2部署项目_mysql_03


常见错误

1.如果遇见一下错误(Can’t connat to mysql server on ‘db’),请docker-compose down之后再docker-compose up一次就可以了,这是mysql没有初始化完,就启动了python-server.

docker 安装walle2部署项目_docker_04


[root@iZt4niz156030y3q2videiZ bin]# docker ps

CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS         PORTS                               NAMES

ecc54f24309b   alenx/walle-web:2.1      "nginx -g 'daemon of…"   2 hours ago   Up 2 seconds   0.0.0.0:80->80/tcp                  walle-nginx

ceae5c89959f   alenx/walle-python:2.1   "bash -c 'cd /opt/wa…"   2 hours ago   Up 2 seconds   5000/tcp                            walle-python

b62c91374266   mysql                    "docker-entrypoint.s…"   2 hours ago   Up 3 seconds   0.0.0.0:3306->3306/tcp, 33060/tcp   walle-mysql

登录进去有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

用超管进去,可以编辑账号信息,和管理空间。至于这几个账号权限和关系,参照:https://walle-web.io/docs/configuration-user.html

账号和空间配置完毕以后,进入环境管理,一般开发环境,线上和测试环境,或者自定义。

环境管理-添加项目环境:

docker 安装walle2部署项目_mysql_05

服务器管理--添加服务器:


docker 安装walle2部署项目_mysql_06

项目管理--添加项目

docker 安装walle2部署项目_docker_07

docker 安装walle2部署项目_python_08


做了一个简单测试,看下效果:git提取代码,更新到服务器上面,用supervisor启动服务进程。

创建上线单:

docker 安装walle2部署项目_docker_09

提交,审核,上线:

docker 安装walle2部署项目_mysql_10

服务器效果:

 public -> /data/www/release/19_18_20230802_18365

cd /data/www/release/ && ls

11_10_20230728_142237  11_10_20230728_142342  11_12_20230731_175251  11_13_20230801_103508  11_15_20230801_173410  11_16_20230801_181332  11_17_20230802_161908  19_18_20230802_183658

每次更新做的软连接,对应data/www/release下面的几个版本号;回滚就是把连接做到原来的补丁上面;

似乎walle2没有增量,单个文件更新功能,或者没找到在哪,walle1有这个功能,实属可惜。

说明:walle服务器需要到所管理的服务器实现免密访问,如果用其他用户也需要把用户的做免密。

碰到的问题:项目管理,免密已经做好了测试正常,但是检测不通过,日志报timeout

ERROR /opt/walle_home/walle/service/waller.py 111 waller.run task_id=0, user:www host:192.168.8.96 command:[ -d wwwroot ] || mkdir -p wwwroot, status=1, message:


error: [Errno 110] Connection timed out

docker 安装walle2部署项目_python_11

没头绪,后面一次次尝试中发现,是docker cat /etc/docker/daemon.json

Iptables设置的问题,可以尝试去掉再试试。

{

  "iptables":false

}

做个简单笔记而已。

参考:

https://walle-web.io/docs/configuration-user.html

https://www.yj-example.cn/?p=505



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
CXp09xev9MeX
作者其他文章 更多