小编Lan*_*nti的帖子

Cron和Crontab文件未在Docker中执行

我有这个简单的Dockerfile用于测试,但这在我的LEMP堆栈中也是一样的PHP图像:cron作业根本没有在Docker中执行.

这是我的测试Dockerfile:

FROM debian:latest
MAINTAINER XY <info@domain.com>
LABEL Description="Cron" Vendor="Istvan Lantos" Version="1.0"

RUN apt-get -y update && apt-get -y dist-upgrade \
    && apt-get -y install \
        cron \
        rsyslog \
        vim

RUN rm -rf /var/lib/apt/lists/*

#cron fixes
RUN touch /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/*
#COPY etc/cron.d /etc/cron.d
COPY etc/crontab /etc/crontab
#COPY var/spool/cron/crontabs /var/spool/cron/crontabs
RUN chmod 600 /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/*
RUN touch /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/*

RUN rm -rf /var/lib/apt/lists/*

COPY docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
CMD ["/docker-entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)

docker-entrypoint.sh:

#!/bin/bash
set -e

echo …
Run Code Online (Sandbox Code Playgroud)

cron crontab docker dockerfile docker-compose

7
推荐指数
1
解决办法
3209
查看次数

如何使用dockerfiles CMD运行shell脚本

我使用dockerfiles来构建一个简单的容器.这是Dockerfile:

FROM XXXXXXX:5003/base-java

MAINTAINER XXXXX

ADD pubsub/ /opt/pubsub/

CMD ["/opt/pubsub/run.sh"]
Run Code Online (Sandbox Code Playgroud)

内容run.sh如下:

#!/bin/bash
nohup java -jar /opt/pubsub/publish.jar &
nohup java -jar /opt/pubsub/subscribe.jar &
Run Code Online (Sandbox Code Playgroud)

这是简单的java应用程序pub/sub.

现在我有另一个运行rabbitmq的容器,我正在连接2​​个容器,但是我的每个尝试都失败了,而我的pub/sub容器没有启动.有人可以建议如何调试这个问题吗?不知何故,docker日志没有任何东西.

这是我如何链接容器: sudo docker run -d -P --name pub_sub --link rabbitmq:rabbitmq1 image_pub_sub

以下是我在pub/sub代码中使用别名的方法

factory = new ConnectionFactory(); 
factory.setHost("rabbitmq1"); 
try { connection = factory.newConnection(); 
channel = connection.createChannel(); 
channel.queueDeclare("pub", true, false, false, null); 
} 
catch (IOException e) { // TODO Auto-generated catch block 
e.printStackTrace(); }
Run Code Online (Sandbox Code Playgroud)

我期待我的发布代码将在rabbitmq容器中创建一个队列并开始推送消息.我的用户代码基本上连接到同一个rabbitmq并开始阅读消息.

当我运行命令没有任何反应时,它只打印新容器的长ID并退出..当我运行时sudo docker …

docker dockerfile

6
推荐指数
1
解决办法
2万
查看次数

在Chrome/Firefox中全屏按下转义时,不会触发Keydown事件

我有这个网站,这是我的下一个投资组合网站:http: //lantosistvan.com/temp/viewport-images/

在右下角,我有一个锚标记,它触发下一个javascript:

$(".expand").on("click", function() {
    $(document).toggleFullScreen();
    $("#header-container, #footer-container").toggleClass('toggle-display');
    $("header, footer").toggleClass('toggle-height');
    $("a.expand").toggleClass('toggle-bottom');
});

$(window).on("keydown", function(e) {
    var code = (e.keyCode ? e.keyCode : e.which);
    if (code == 27, 122) {
        $("#header-container, #footer-container").removeClass('toggle-display');
        $("header, footer").removeClass('toggle-height');
        $("a.expand").removeClass('toggle-bottom')
    }
});
Run Code Online (Sandbox Code Playgroud)

第一个代码将触发Klaus Reimer的"jquery.fullscreen 1.1.4".js:https://github.com/kayahr/jquery-fullscreen-plugin

下一行将在css"toggle-display"中添加一个类,它隐藏了"#header-container"和"#footer-container"."Toggle-height"为"标题"和"页脚"(30px)提供了新的高度,"toggle-bottom"将为按钮提供新的右下边距.

如果我使用按钮切换,这很有效.但是,如果有人使用ESC(在Firefox中)或ESC和F11(在Chrome中)按钮,该网站将从全屏退出,但注入的CSS更改仍然保持不变.这将打破整个体验.

所以当有人按ESC或F11时,我创建了第二个代码组,我删除了这些类.

问题:

  • 在Firefox中,F11非常棒!它正在删除类,因此,垂直图像高度javascript也保持图像高度和宽高比没有问题.
  • 但是如果按ESC键,它将从全屏退出,但不会删除类.您需要再次按ESC或F11,才能运行代码.但是,jquery.fullscreen仍然运行(因为没有任何关闭调用).如果您第二次按相同的键,则图像垂直简单不适合视口UNTIL您以某种方式更改了浏览器视口大小(例如:进入窗口模式并更改浏览器大小).
  • Chrome也有同样的问题,但由于Chrome也会使用F11进入原生全屏,因此也会出现问题.

如果单击右下方按钮,按ESC键,再按一下按钮,功能就会打开.现在它将进入全屏,就像按F11一样.如果有人用F11进入全屏并且他可以看到整个网站,我没有问题.我不想限制我的用户选项.F11没有动过,对我来说很好.

有没有任何解决方案,原生全屏API将首先触发我的javascript线?当我离开全屏?

更新2013.09.14. 我认为这是一个与Webkit相关的问题.为什么它在Firefox(F11)中不使用本机退出键,而不使用本机退出键(ESC),即使我一直处于本机全屏模式......?我们能以某种方式欺骗吗?

更新2013.09.15. 通过koala_dev:

$(".expand").on("click", function() {
    $(document).toggleFullScreen();
});

$(document).on("fullscreenchange", function() {
    if($(document).fullScreen()){
        //Just went into fullscreen
        $("#header-container, #footer-container").addClass('toggle-display');
        $("header, footer").addClass('toggle-height');
        $("a.expand").addClass('toggle-bottom');
    }else{
        //Just exit fullscreen …
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 webkit fullscreen

5
推荐指数
1
解决办法
3711
查看次数

在 JSON 获取请求中设置标头

我通过以下方式从外部 API 获得 JSON 响应:

func Request(url string, contentType string) []byte {
    resp, err := http.Get(url)
    resp.Header.Set("Content-Type", contentType)
    if err != nil {
        log.Fatal(err)
    }

    body, err := ioutil.ReadAll(resp.Body)
    resp.Body.Close()
    if err != nil {
        log.Fatal(err)
    }

    return body
}

url := fmt.Sprintf("https://example.com/api/category/%s", category)
contentType := "application/json"
body := Request(url, contentType)

res := &JSONRespStruct{}
err := json.Unmarshal([]byte(body), res)
if err != nil {
    log.Fatal(err)
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我开始使用 对我的网站进行基准测试go-wrk,服务器会崩溃并显示以下错误消息:

2018/01/02 12:13:35 invalid character '<' looking for beginning of value
Run Code Online (Sandbox Code Playgroud)

我认为代码尝试将 …

json go

4
推荐指数
1
解决办法
4481
查看次数

SELECT 使用新的 CREATE PROCEDURE 方法

我正在尝试SELECT使用CREATE PROCEDUREPostgreSQL 11 中的新方法存储一个简单的查询。我的想法是将查询存储在数据库中,因为我的 API 服务器中可以有一个非常简单的代码,也许我不需要开发一个查询生成器是否可以在具有强制类型安全的 sql 函数中使用 if/else。我有这个最小的例子:

首先我尝试了这个 plpgsql 函数:

CREATE OR REPLACE PROCEDURE test_proc() AS $$
    BEGIN
        SELECT * FROM my_db
        LIMIT 1;
    END;
$$ LANGUAGE plpgsql;

CALL test_proc();
Run Code Online (Sandbox Code Playgroud)

但是抛出这个错误:

ERROR: query has no destination for result data HINT: If you want to discard the results of a SELECT, use PERFORM instead. CONTEXT: PL/pgSQL function test_proc() line 3 at SQL statement SQL state: 42601

如果我尝试使用RETURN QUERY

CREATE OR REPLACE PROCEDURE test_proc() …
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql

4
推荐指数
1
解决办法
8090
查看次数

如何使用koa-views + handlebars渲染主布局和局部视图?

这是我的views文件夹结构:

- views
  - layouts
      layout.hbs
  - partials
      part.hbs
  home.hbs
Run Code Online (Sandbox Code Playgroud)

我正在渲染模板的宽度:

app.use(views(__dirname + '/views', {
  extension: 'hbs',
  map: { hbs: 'handlebars' }
}));

router.get('/', async (ctx) => {
  await ctx.render('home', {
    Name: 'Iris',
    Type: 'Web',
    Path: '/'
  });
});
Run Code Online (Sandbox Code Playgroud)

我想要的是定义主布局文件和partials文件夹,就像它位于中一样express-handlebars。真的没有办法用koa-viewspure 做到这一点handlebars吗?

我必须使用koa-hbs还是koa-handlebars?但是他们使用了即将弃用的功能(以及Handlebars v2.0.0,v3.0.0):

koa deprecated Support for generators will been removed in v3.
See the documentation for examples of how to convert old middleware
https://github.com/koajs/koa/tree/v2.x#old-signature-middleware-v1x app.js:45:5
Run Code Online (Sandbox Code Playgroud)

编辑:

好像koa-hbs和 …

javascript handlebars.js koa

3
推荐指数
1
解决办法
2342
查看次数

使用 gulp 进行请求

我有以下内容Gulpfile.js

'use strict';

const gulp    = require('gulp'),
      request = require('request');

const paths = {
  vendor: [
    'https://raw.githubusercontent.com/jquery/jquery-dist/master/dist/jquery.min.js',
    'https://raw.githubusercontent.com/kenwheeler/slick/master/slick/slick.js'
  ]
};

gulp.task('vendor', (res) => {
  const url = request.get(paths.vendor).pipe(res);
  return gulp.src(url)
    .pipe(gulp.dest('public/vendor'));
});

gulp.task('default', gulp.parallel('vendor'));
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error: options.uri is a required argument
Run Code Online (Sandbox Code Playgroud)

通过这种方法,我试图阻止客户端包管理器,比如 Bower。有没有办法使用requestgulp循环对象列表?

编辑:

我放置此代码进行测试,仅返回循环中的第一行:

gulp.task('vendor', () => {
  for (let i=0; i<paths.vendor.length; i++) {
    return console.log(paths.vendor[i]);
  };
});
Run Code Online (Sandbox Code Playgroud)

就像:

gulp.task('vendor', (res) => {
  const url = request.get(paths.vendor[index++]).pipe(res);
  return gulp.src(url)
    .pipe(gulp.dest('public/vendor'));
});
Run Code Online (Sandbox Code Playgroud)

javascript request node.js gulp

2
推荐指数
1
解决办法
3970
查看次数

汇编代码的长度可以指示执行速度吗?

我正在学习C,请考虑以下代码片段:

#include <stdio.h>

int main(void) {
  int fahr;
  float calc;

  for (fahr = 300; fahr >= 0; fahr = fahr - 20) {
    calc = (5.0 / 9.0) * (fahr - 32);
    printf("%3d %6.1f\n", fahr, calc);
  }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是将Celsius到华氏温度转换表从300打印到0.我用以下代码编译:

$ clang -std=c11 -Wall -g -O3 -march=native main.c -o main
Run Code Online (Sandbox Code Playgroud)

我还使用此命令生成汇编代码:

$ clang -std=c11 -Wall -S -masm=intel -O3 -march=native main.c -o main
Run Code Online (Sandbox Code Playgroud)

哪个生成1.26kb文件和71行.

我稍微编辑了代码并将逻辑移到另一个函数中,该函数在main()中被初始化:

#include <stdio.h>

void foo(void) {
  int fahr;
  float calc;

  for (fahr = 300; fahr >= …
Run Code Online (Sandbox Code Playgroud)

c assembly clang

1
推荐指数
1
解决办法
185
查看次数

如何在Linux bash脚本中调用用户/组ID

我有这个bash脚本.我使用以下命令运行它:sudo ./install.sh

#!/bin/bash

MYSQL_PASS="password"

USER="500"
SUPERUSER="0"

sudo -u ${USER} echo -e "Installing docker-compose from GitHub Latest release..." \
\
&& sudo -u ${SUPERUSER} mkdir -p /opt/bin \
&& sudo -u ${SUPERUSER} curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose \
&& sudo -u ${SUPERUSER} chmod +x /opt/bin/docker-compose \
&& sudo -u ${USER} echo -e "docker-compose installed, verifying..." \
&& sudo -u ${USER} docker-compose -v \
\
&& sudo -u ${USER} echo -e "Creating folder structure..." \
&& sudo -u ${USER} …
Run Code Online (Sandbox Code Playgroud)

linux bash

-2
推荐指数
1
解决办法
47
查看次数