说明: 项目从 [ Jumpserver 官方 ] fork 而来.

主要更新:

  • OS: ubuntu:18.04
  • 优化了 Dockerfile
  • Jumpserver 版本: 1.4.0
  • redis 运行在容器内
  • mysql 从容器中摘离了出来

环境依赖

  • mysql 版本: 5.7.23 (查看 [ 这里 ])
  • mysql 数据库的字符编码为 : utf8.

运行容器时环境变量的缺省选项为

  1. DB_ENGINE=mysql
  2. DB_HOST=172.17.0.1
  3. DB_USER=jms
  4. DB_PASSWORD=jumpserver
  5. DB_NAME=jumpserver
  6. DB_PORT=3306

用 Docker 来构建 Jumpserver

准备数据库 mysql

  1. docker volume create jms_mysql
  2. docker run -d --name jms_mysql \
  3. --restart=always \
  4. -e "MYSQL_ROOT_PASSWORD=testpw" \
  5. -v jms_mysql:/var/lib/mysql mysql:5.7.23

登录 mysql 创建数据库

  1. docker exec -it jms_mysql mysql -uroot -ptestpw
  2. mysql> CREATE DATABASE `jumpserver` CHARACTER SET utf8;
  3. mysql> GRANT ALL PRIVILEGES ON `jumpserver`.* TO 'jms'@'172.17.%' IDENTIFIED BY "jumpserver";
  4. mysql> FLUSH PRIVILEGES;

创建 jumpserver 镜像

  1. git clone https://github.com/Tiantiandas/jumpserver.git
  2. cd jumpserver
  3. docker build -t xxx/jumpserver<:tag> .

也可以从 dockerhub 获取

  1. docker pull zhegao/jumpserver

运行 jumpserver 容器

  1. docker run -d --name jms_server \
  2. -p 8080:80 \
  3. -p 2222:2222 \
  4. --link jms_mysql:mysql \
  5. -e "DB_HOST=jms_mysql" \
  6. -e "DB_USER=<mysql_user>" \
  7. -e "DB_PASSWORD=<mysql_password>" \
  8. -e "DB_NAME=<mysql_dbname>" \
  9. -e "DB_PORT=<mysql_port>" \
  10. zhegao/jumpserver

宿主机 nginx 配置

因为 coco 是 websocket 服务, 需要指定 Upgrade Header 以及 http_version.

  1. upstream jumpserver{
  2. server 127.0.0.1:8080;
  3. }
  4. server {
  5. listen 80;
  6. server_name _;
  7. proxy_set_header X-Real-IP $remote_addr;
  8. proxy_set_header Host $host;
  9. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  10. proxy_set_header X-Forwared-Proto "http";
  11. location / {
  12. proxy_pass http://jumpserver;
  13. }
  14. location /media/ {
  15. add_header Content-Encoding gzip;
  16. proxy_pass http://jumpserver;
  17. }
  18. location /socket.io/ {
  19. proxy_pass http://jumpserver;
  20. proxy_http_version 1.1;
  21. proxy_set_header Upgrade $http_upgrade;
  22. proxy_set_header Connection "upgrade";
  23. }
  24. error_page 404 /404.html;
  25. location = /40x.html {
  26. }
  27. error_page 500 502 503 504 /50x.html;
  28. location = /50x.html {
  29. }
  30. }

SSL 证书生成

[ letsencrypt ]

使用 mkcert 生成证书

  1. # centos
  2. yum -y install golang nss-tools
  3. # ubuntu
  4. apt-get install golang libnss3-tools
  5. git clone https://github.com/FiloSottile/mkcert.git
  6. cd mkcert && make
  7. mv bin/mkcert /bin
  1. mkcert install

具体使用可使用: mkcert --help

用 Docker 来构建 Jumpserver的更多相关文章

  1. NodeMCU入门(5):Docker Image 构建固件,开启SmartConfig

    准备工作 1.NodeMCU模块 2.ESP8266Flasher.exe 3.EspTouch.apk 3.docker toolbox(win7系统) 或 docker(win10以上),本教程是 ...

  2. Docker镜像构建的两种方式(六)--技术流ken

    镜像构建介绍 在什么情况下我们需要自己构建镜像那? (1)当我们找不到现有的镜像,比如自己开发的应用程序 (2)需要在镜像中加入特定的功能 docker构建镜像有两种方式:docker commit命 ...

  3. docker学习构建镜像---第三章节

    一.docker镜像使用 运行docker容器时,使用的镜像如果在本地不存在,docker会自动从docker镜像仓库中下载,默认是从docker hub公共镜像源下载 在这里,我们需要了解:管理和使 ...

  4. (转)Docker镜像构建上下文(Context)

    镜像构建上下文(Context) Docker在构建镜像时,如果注意,会看到 docker build 命令最后有一个 ... 表示当前目录,而 Dockerfile 就在当前目录,因此不少初学者以为 ...

  5. Docker镜像构建(五)

    Docker 镜像介绍 Docker镜像构建分为两种,一种是手动构建,另一种是Dockerfile(自动构建) 手动构建docker镜像 案例:我们基于centos镜像进行构建,制作自己的nginx镜 ...

  6. docker入门——构建镜像

    前面我们已经介绍了如何拉取已经构建好的带有定制内容的Docker镜像,那么如何构建自己的镜像呢? 构建Docker镜像有以下两种方法: 使用docker commit命令. 使用docker buil ...

  7. docker,构建nginx反向代理tomcat

    Nginx实现负载均衡是通过配置nginx.conf来实现的,nginx.conf的全部内容如下: user nginx; worker_processes 1; error_log /var/log ...

  8. Docker快速构建Redis集群(cluster)

    Docker快速构建Redis集群(cluster) 以所有redis实例运行在同一台宿主机上为例子 搭建步骤 redis集群目录清单 . ├── Dockerfile ├── make_master ...

  9. Docker之构建上下文详解

    昨天写了使用 Dockerfile 定制镜像.其中构建上下文这一块没有写,今天把这一块单独拿出来写一下. Docker镜像构建 简单说下构建镜像步骤: cd Dockerfile 所在目录; 执行 d ...

随机推荐

  1. 【IdentityServer4文档】- 贡献

    贡献 我们非常乐于接受社区贡献,但您应遵循一些指导原则,以便我们可以很方便的解决这个问题. 如何贡献? 最简单的方法是打开一个问题并开始讨论.然后,我们可以决定如何实现一个特性或一个变更.如果您即将提 ...

  2. 原生js操作Dom节点:CRUD

    知识点,依然会遗忘.我在思考到底是什么原因.想到研究生考试准备的那段岁月,想到知识体系的建立,知识体系分为正向知识体系和逆向知识体系:正向知识体系可以理解为教科书目录,逆向知识体系可以理解考试真题. ...

  3. navicat for mysql 10.1.7 注册码

    NAVN-LNXG-XHHX-5NOO名:组织:注册码:均为NAVN-LNXG-XHHX-5NOO 下载地址:http://www.cr173.com/soft/38153.html

  4. SQL SERVER技术内幕之3 联接查询

    JOIN表运算符对两个输入表进行操作.联接有三种基本类型:交叉联接.内联接和外联接.这三种联接的区别是它们采用的逻辑查询处理步骤各不相同,每种联接都有一套不同的步骤.交叉联接只有一个步骤----笛卡尔 ...

  5. 如何高效的使用Google

    文章再转自知乎:http://www.zhihu.com/question/20161362

  6. js 复制到剪贴板 兼容还得自己想办法

    clipboard.js https://github.com/zenorocha/clipboard.js/ 主要问题还是ie8, 可以使用ie 特有的方法 if (window.clipboard ...

  7. BZOJ 1930 吃豆豆(费用流)

    首先这题的两条线不相交的限制可以去掉,因为如果相交的话把点换一换是不影响最终结果的. 剩下的费用流建图是显然的,把点拆为两个,建立超级源点s和源点ss汇点t,连边(s,ss,2,0). 对于每个点,连 ...

  8. JS内存空间详细图解

    JS内存空间详细图解 变量对象与堆内存 var a = 20; var b = 'abc'; var c = true; var d = { m: 20 } 因为JavaScript具有自动垃圾回收机 ...

  9. [bzoj] 2002 弹飞绵羊 || LCT

    原题 简单的LCT练习题. 我们发现对于一个位置x,他只能跳到位置x+k,也就是唯一的父亲去.加入我们将弹飞的绵羊定义为跳到了n+1,那么这就形成了一棵树.而因为要修改k,所以这颗树是动态连边的,那么 ...

  10. 关于EK Dicnic

    笔记--最大流  $EK$ $Dinic$ $EK$: 运用反向边可以给当前图一次反悔的机会,就是其实现在的增广路并不是最优的,然后就$bfs$找增广路即可 $Dicnic$: 我们发现其实每一次先$ ...