0%

  • 创建一个能运行docker命令的基础镜像
FROM hub.deri.org.cn/library/openjdk:8-jdk-alpine
MAINTAINER wuzhiyong Docker Maintainers "wuzhiyong@deri.energy"
RUN echo "Asia/shanghai" > /etc/timezone
RUN apk add docker
ENV LANG C.UTF-8
  • 创建java镜像
FROM hub.deri.org.cn/library/openjdk:8-jdk-alpine-docker
MAINTAINER wuzhiyong Docker Maintainers "wuzhiyong@deri.energy"
ADD route-1.0.0-SNAPSHOT.jar /root
EXPOSE 8080
ENV LANG C.UTF-8
CMD cd /root  && java -jar route-1.0.0-SNAPSHOT.jar
  • 启动容器必须携带的
 -v /var/run/docker.sock:/var/run/docker.sock

这样启动起来的java容器内,可以直接执行docker命令,如docker ps获取宿主机所有运行的容器列表.

redis连接配置:

 @Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
    RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    return container;
}

消息监听器:

@Component
public class RedisCallBack extends KeyExpirationEventMessageListener {

    public RedisCallBack(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    @Override
    public void onMessage(Message message, byte[] pattern) {
        System.out.println("过期key:" + message.toString());
    }
}

<div>
    <label class="radio-inline">
        <input type="radio" name="expire" th:value="1" th:checked="true"/>6小时
    </label>
    <label class="radio-inline">
        <input type="radio" name="expire" th:value="2"/>12小时
    </label>
    <label class="radio-inline">
        <input type="radio" name="expire" th:value="3"/>1天
    </label>
    <label class="radio-inline">
        <input type="radio" name="expire" th:value="4"/>3天
    </label>
    <label class="radio-inline">
        <input type="radio" name="expire" th:value="5"/>7天
    </label>
</div>

表单提交时如何获取用户选中了哪个单选框呢?

var expire = $("input[name='expire']:checked").val();

问题

如何在点击进入Modal后将表格数据传入?

方法一

<a class="btn btn-info btn-xs" th:data-port="${port.port}" data-toggle="modal" onclick="showDialog(this)">配置</a>
function showDialog(obj) {
    $('#myModal').modal('show');
    // 获取表格所在行的数据
    var tds = $(obj).parent().parent().find('td');
    // eq(0)获取第1列的数据传入ID为port输入框中
    $("#port").val($(tds.eq(0)).text());
}

方法二

<a class="btn btn-info btn-xs" th:data-port="${port.port}" data-toggle="modal" data-target="#myModal">配置</a>
$(function () { $('#myModal').on('show.bs.modal', function (e) {
        var btn = $(e.relatedTarget);
        // 获取data-port数据
        port = btn.data("port");
        document.getElementById("port").value=port;
    })
    });

安装

# 检查服务器是否安装了 VNC
rpm -qa | grep vnc
# 安装
yum install tigervnc tigervnc-server -y

使用

# 启动一个桌面
# 启动完成默认监听的是5901端口
# vncserver :1 -geometry 1920x1080 -SecurityTypes None
vncserver :1

# 可以再启动一个桌面
# 启动完成默认监听的是5902端口
vncserver :1

# 查看桌面列表
[root@hadoop3 ~]# vncserver -list

TigerVNC server sessions:

X DISPLAY #	PROCESS ID
:1		19243
:2      18722

# 删除一个桌面
vncserver -kill :2

# 为当前用户创建vnc密码
[root@ ~]# vncpasswd
Password:
Verify:

如果开通了防火墙,就需要手动开放相关端口

iptables -I INPUT -p tcp --dport 5901 -j ACCEPT
iptables -I INPUT -p tcp --dport 5902 -j ACCEPT

测试VNC服务

  1. 下载VNC Viewer
  2. 启动VNC Viewer软件
  3. Server输入 192.168.3.11:1
  4. 输入密码

遇到的问题

vnc和anaconda冲突


Could not make bus activated clients aware of XDG_CURRENT_DESKTOP=GNOME envi

解决办法:

  1. 注释掉~/.bashrc中anaconda相关的环境变量设置
  2. 执行source ~/.bashrc
  3. 重启一个xshell连接,启动vnc
  4. 还原~/.bashrc中注释掉的anaconda相关的环境变量
  5. 执行source ~/.bashrc

参考链接

docker部署

# MONGO_INITDB_ROOT_USERNAME 设置root用户名
# MONGO_INITDB_ROOT_PASSWORD 设置root密码
# --auth 需要密码才能访问容器服务
# -v /my/own/datadir:/data/db 设置持久化存储
docker run -d --name mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456  mongo --auth

测试

docker exec -it mongo mongo admin
# 测试root用户登录
> db.auth('admin','123456')
1

# 创建一个名为 test,密码为 123456 的用户。
>  db.createUser({ user:'test',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

使用