部署分布式jumpserver
1、 定义网络和数据持久化
docker network create --driver=bridge \
--subnet=192.168.20.0/24 --gateway=192.168.20.1 jump-network
#定义私有网络192.168.20.0/24
docker volume create jump_mysql
docker volume create jumpserver
#数据库持久化和jumpserver数据持久化
2、 部署数据库
docker run --name jump-mysql \
--network jump-network --ip 192.168.20.2 \
-v jump_mysql:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_DATABASE="jumpserver" \
-e MYSQL_USER="jumpserver" \
-e MYSQL_PASSWORD="jumpserver" \
-e MYSQL_ROOT_PASSWORD="jumpserver" \
-d mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_unicode_ci
3、部署redis
docker run --name jump-redis \
--network jump-network --ip 192.168.20.3 \
-p 6379:6379 \
-d redis \
--requirepass "111111"
–requirepass “111111”:配置密码
4、部署jumpserver
生成随机加密秘钥
if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi
if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi
记下秘钥,启动jumpserver环境变量使用
环境迁移和更新升级请检查 SECRET_KEY 是否与之前设置一致, 不能随机生成, 否则数据库所有加密的字段均无法解密
启动jumpserver容器
docker run --name jms_all -d \
--network jump-network --ip 192.168.20.4 \
-v jumpserver:/opt/jumpserver/data/media \
-p 80:80 \
-p 2222:2222 \
-e SECRET_KEY=xxxxxxxxxxxxxxxxxx \
-e BOOTSTRAP_TOKEN=xxxxxxx \
-e DB_HOST=192.168.20.2 \
-e DB_PORT=3306 \
-e DB_USER=jumpserver \
-e DB_PASSWORD=jumpserver \
-e DB_NAME=jumpserver \
-e REDIS_HOST=192.168.20.3 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD=111111\
jumpserver/jms_all