用 Docker 来构建 Jumpserver
说明: 项目从 [ Jumpserver 官方 ] fork 而来.
主要更新:
- OS: ubuntu:18.04
- 优化了 Dockerfile
- Jumpserver 版本: 1.4.0
- redis 运行在容器内
- mysql 从容器中摘离了出来
环境依赖
- mysql 版本: 5.7.23 (查看 [ 这里 ])
- mysql 数据库的字符编码为 :
utf8
.
运行容器时环境变量的缺省选项为
DB_ENGINE=mysql
DB_HOST=172.17.0.1
DB_USER=jms
DB_PASSWORD=jumpserver
DB_NAME=jumpserver
DB_PORT=3306
用 Docker 来构建 Jumpserver
准备数据库 mysql
docker volume create jms_mysql
docker run -d --name jms_mysql \
--restart=always \
-e "MYSQL_ROOT_PASSWORD=testpw" \
-v jms_mysql:/var/lib/mysql mysql:5.7.23
登录 mysql 创建数据库
docker exec -it jms_mysql mysql -uroot -ptestpw
mysql> CREATE DATABASE `jumpserver` CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON `jumpserver`.* TO 'jms'@'172.17.%' IDENTIFIED BY "jumpserver";
mysql> FLUSH PRIVILEGES;
创建 jumpserver 镜像
git clone https://github.com/Tiantiandas/jumpserver.git
cd jumpserver
docker build -t xxx/jumpserver<:tag> .
也可以从 dockerhub 获取
docker pull zhegao/jumpserver
运行 jumpserver 容器
docker run -d --name jms_server \
-p 8080:80 \
-p 2222:2222 \
--link jms_mysql:mysql \
-e "DB_HOST=jms_mysql" \
-e "DB_USER=<mysql_user>" \
-e "DB_PASSWORD=<mysql_password>" \
-e "DB_NAME=<mysql_dbname>" \
-e "DB_PORT=<mysql_port>" \
zhegao/jumpserver
宿主机 nginx 配置
因为 coco 是 websocket 服务, 需要指定 Upgrade
Header 以及 http_version
.
upstream jumpserver{
server 127.0.0.1:8080;
}
server {
listen 80;
server_name _;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwared-Proto "http";
location / {
proxy_pass http://jumpserver;
}
location /media/ {
add_header Content-Encoding gzip;
proxy_pass http://jumpserver;
}
location /socket.io/ {
proxy_pass http://jumpserver;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
SSL 证书生成
使用 mkcert 生成证书
# centos
yum -y install golang nss-tools
# ubuntu
apt-get install golang libnss3-tools
git clone https://github.com/FiloSottile/mkcert.git
cd mkcert && make
mv bin/mkcert /bin
mkcert install
具体使用可使用: mkcert --help
用 Docker 来构建 Jumpserver的更多相关文章
- NodeMCU入门(5):Docker Image 构建固件,开启SmartConfig
准备工作 1.NodeMCU模块 2.ESP8266Flasher.exe 3.EspTouch.apk 3.docker toolbox(win7系统) 或 docker(win10以上),本教程是 ...
- Docker镜像构建的两种方式(六)--技术流ken
镜像构建介绍 在什么情况下我们需要自己构建镜像那? (1)当我们找不到现有的镜像,比如自己开发的应用程序 (2)需要在镜像中加入特定的功能 docker构建镜像有两种方式:docker commit命 ...
- docker学习构建镜像---第三章节
一.docker镜像使用 运行docker容器时,使用的镜像如果在本地不存在,docker会自动从docker镜像仓库中下载,默认是从docker hub公共镜像源下载 在这里,我们需要了解:管理和使 ...
- (转)Docker镜像构建上下文(Context)
镜像构建上下文(Context) Docker在构建镜像时,如果注意,会看到 docker build 命令最后有一个 ... 表示当前目录,而 Dockerfile 就在当前目录,因此不少初学者以为 ...
- Docker镜像构建(五)
Docker 镜像介绍 Docker镜像构建分为两种,一种是手动构建,另一种是Dockerfile(自动构建) 手动构建docker镜像 案例:我们基于centos镜像进行构建,制作自己的nginx镜 ...
- docker入门——构建镜像
前面我们已经介绍了如何拉取已经构建好的带有定制内容的Docker镜像,那么如何构建自己的镜像呢? 构建Docker镜像有以下两种方法: 使用docker commit命令. 使用docker buil ...
- docker,构建nginx反向代理tomcat
Nginx实现负载均衡是通过配置nginx.conf来实现的,nginx.conf的全部内容如下: user nginx; worker_processes 1; error_log /var/log ...
- Docker快速构建Redis集群(cluster)
Docker快速构建Redis集群(cluster) 以所有redis实例运行在同一台宿主机上为例子 搭建步骤 redis集群目录清单 . ├── Dockerfile ├── make_master ...
- Docker之构建上下文详解
昨天写了使用 Dockerfile 定制镜像.其中构建上下文这一块没有写,今天把这一块单独拿出来写一下. Docker镜像构建 简单说下构建镜像步骤: cd Dockerfile 所在目录; 执行 d ...
随机推荐
- Khan Academy
Khan Academy是一个免费的学院. 致力于教育改革. 百度百科:ohn Resig 百度百科有记者采访,采访内容比较有意思.
- LintCode-379.将数组重新排序以构造最小值
将数组重新排序以构造最小值 给定一个整数数组,请将其重新排序,以构造最小值. 注意事项 The result may be very large, so you need to return a st ...
- nginx 设置默认虚拟 host
nginx 设置默认虚拟 host listren 80 default_server
- 【ASP.NET Core】- 搭建MVC框架
1.使用最新版本的VS2017,并安装.NET Core2.0中相关开发工具 2.打开VS2017,点击文件-新建-项目,选择.NET Core中的ASP.NET Core Web 应用程序 ...
- HASH表的实现(拉链法)
本文的一些基本概念参考了一部分百度百科,当然只保留了最有价值的部分,代码部分完全是自己实现! 简介 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据 ...
- VS2010中的sln,suo分别是什么含义
我们通过双击.sln加载出我们的工程. Visual Studio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件.为解决方案资源管理器提供显示管理文件 ...
- Spring MVC 之@Controller@RequestMapping详解
一:配置web.xml 1)问题:spring项目中有多个配置文件mvc.xml dao.xml 2)解决:在web.xml中 <init-param> <param-name& ...
- 如何在存储过程中执行set命令 我来答
1.EXEC使用EXEC命令两种用种执行存储程另种执行态批处理所讲都第二种用 面先使用EXEC演示例,代码1DECLARE @TableName VARCHAR(50),@Sql NVARCHAR ( ...
- 分布式消息队列RocketMQ&Kafka -- 消息的“顺序消费”
在说到消息中间件的时候,我们通常都会谈到一个特性:消息的顺序消费问题.这个问题看起来很简单:Producer发送消息1, 2, 3... Consumer按1, 2, 3...顺序消费. 但实际情况却 ...
- IE8 兼容CSS3 使用 PIE.htc
在需要的标签中 div { border:; border-bottom: 10px solid transparent; border-image: url(../images/border-img ...