小编Rus*_*our的帖子

为Traefik定义主机和路径前端规则

我正在尝试使用Traefik在我的Docker Swarm模式集群中部署代理多个应用程序.

我已经得到它,以便它代理一个命名的主机,但我希望它代理一个命名的主机和路径,但我无法计算出我需要使用的标签.

这是docker service我使用的命令:

 docker service create \
                       \
    --label "traefik.port=9000" \
    --label "traefik.docker.network=traefik-net" \
    --label "traefik.frontend.rule=Host:`hostname -f`" \
    --label="traefik.backend=portainer" \
                                        \
    --constraint "node.role == manager" \
    -p 9000:9000 \
    --mount "type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock" \
    --name portainer \
    portainer/portainer
Run Code Online (Sandbox Code Playgroud)

如果主机是,dummy.localhost那么我可以打开portainer应用程序http://dummy.localhost.但是我想修改它以便我必须使用http://dummy.localhost/portainer.

我已经看到有一些方法可以在为Traefik使用toml文件时执行此操作,但我在部署的docker服务上使用监视模式和标签.

如何在标签中组合多个前端规则,以便可以在主机名和路径上代理此(和任何其他)应用程序?

traefik

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

如何让watir-webdriver和safariwatir一起工作?

早上好,

我正在设置watirgrid并且我已经部分成功了,但是我遇到了让所有提供程序使用我的ruby脚本的问题.

在我的Mac上,我使用命令行设置了一个提供程序:

provider -d safariwatir -c druby://192.168.0.1:11235
Run Code Online (Sandbox Code Playgroud)

然后在我的Ubuntu机器上我设置了另一个提供者

provider -d webdriver -c druby://192.168.0.1:11235
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用以下ruby代码:

require 'rubgygems'
require 'watirgrid'

Watir::Grid.control(:controller_uri => 'druby://192.168.0.1:11235', :browser_type => 'firefox'_ do |browser, id|
    puts "Browser id is #{i}"
    browser.goto("http://www.google.co.uk")
    puts browser.title
end
Run Code Online (Sandbox Code Playgroud)

这种方式的工作原理是两个浏览器都启动并转到所选页面.但是我不想指定'firefox'作为浏览器类型,因为我想要定位网格中的所有浏览器(Windows上的IE,Mac上的FF等).所以我然后尝试从Grid.control命令中取出'firefox',当'Safari'启动时,我从第二个浏览器收到错误,因为它不知道要运行什么我猜.

(抱歉,但我不是在我的机器上重新创建错误并在此处发布.我会尽可能用这个更新帖子).

我试图用-b开关启动webdriver提供程序:

provider -d webdrive -c druby://192.168.0.1:11235 -b firefox
Run Code Online (Sandbox Code Playgroud)

然后再次运行相同的ruby代码,没有浏览器类型,但我得到相同的错误.

我在这里错过了什么吗?

我假设在具有多个浏览器的计算机上运行多个提供程序是正常的,只是在不同的端口上.

我已经取得了一些成功,我已经让Chrome在一台孤立的机器上使用了webdriver,我认为这对我的Web开发很有帮助,我只需要解决这个问题所以感谢您的帮助.我希望这一切都有意义.

谢谢,拉塞尔

watir safariwatir watir-webdriver

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

Twig"已定义"是否适用于可迭代对象?

我有一个模板,它总是会收到一个可迭代的对象,所以我可以迭代它.在循环内,每个'结果'中的对象可能有也可能没有我需要显示图像的属性,所以我一直在尝试使用'defined':例如:

{% for result in results %}
    {% if result.thumbnail is defined %}
    <img src='{{ result.thumbnail }}' >
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个时,我总是从Twig得到同样的错误:

方法'thumbnail'未实现

我认为'定义'方法会为我解决这个问题.我错过了什么?

我正在使用Twig(1.18)和Silex(~1.2).

谢谢拉塞尔

更新

这是{{ dump(result) }}迭代器中有两个对象的输出:

object(Turtle\Model\Attachment)[1056]
  protected 'datatype' => string 'Attachments' (length=11)
  protected 'filename' => string '560166.jpg' (length=10)
  protected 'displayname' => null
  protected 'description' => null
  protected 'collection' => string 'product' (length=7)
  protected 'width' => int 360
  protected 'height' => int 360
  protected 'file' => string '/9j/4QP+RXhpZgAASUkqAAgAAAAYAAABAwABAAAA8AAAAAEBAwABAAAAtAAAAAIBAwADAAAALgEAAAYBAwABAAAAAgAAAA4BAgAgAAAANAEAAA8BAgAFAAAAVAEAABABAgAJAAAAWQEAABIBAwABAAAAAQAAABUBAwABAAAAAwAAABoBBQABAAAAYgEAABsBBQABAAAAagEAACgBAwABAAAAAgAAADEBAgAeAAAAcgEAADIBAgAUAAAAkAEAABMCAwABAAAAAgAAAAGkAwABAAAAAAAAAAKkAwABAAAAAAAAAAOkAwABAAAAAAAAAAakAwABAAAAAAAAAAikAwABAAAAAAAAAAmkAwABAAAAAAAAAAqkAwABAAAAAAAAAKXEBwAcAAAApAEAAGmHBAABAAAAwAEAAJgDAAAIAAgACAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAFNPTlkARFNDLVAyMDAAgPwKABAnAACA/AoAECcAAEFk'... (length=34432)
  protected 'mimetype' …
Run Code Online (Sandbox Code Playgroud)

php twig silex

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

如何登录设置了HTTP前缀的Docker注册表?

我已经设置了自己的Docker注册表,但是我不想在根URL上使用它,因此在创建服务时,我使用了REGISTRY_HTTP_PREFIX环境变量并将其设置为/registry/,因此注册表的URL为https://tools.example.com/registry。Nginx已对此进行代理,后者具有基本身份验证设置。

我使用浏览器测试了对注册表的访问,并能够通过以下步骤获取它来表明没有存储库http://tools.example.com/registry/v2/_catalog

在此处输入图片说明

这使我认为这是行之有效的。但是,当我尝试使用Docker命令行登录到注册表时,遇到基本身份验证挑战,但是由于URL不正确而导致登录失败,例如

docker login -u russells -p xxxxxxxx https://tools.example.com/registry/
Error response from daemon: login attempt to https://tools.example.com/v2/ failed with status: 404 Not Found
Run Code Online (Sandbox Code Playgroud)

从错误中可以看出,前缀未正确添加。因此,我该如何登录注册表,以便推送图像。是否存在环境变量或我缺少的一些东西才能docker login正常工作?

更新-2017-08-12 2253 BST

我一直在研究配置,但是我仍未走得太远。

根据要求,这里是我的配置文件。

nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    keepalive_timeout …
Run Code Online (Sandbox Code Playgroud)

docker docker-registry

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

如何使用Route 53作为Traefik中的Lets Encrypt的DNS挑战?

我的本地域名是home.turtlesystems.co.uk。我在此域内的本地Docker Swarm集群上使用Traefik。

由于没有对群集的直接Internet访问,因此我无法对Lets Encrypt使用HTTPS挑战,因此我尝试使用Route53作为DNS提供程序。

我在Route53中为我的主域设置了一个区域,该域是turtlesystems.co.uk我拥有的子域。

我的traefik.toml档案看起来像:

debug = true

defaultEntryPoints = ["http", "https"]

[entryPoints]
   [entryPoints.http]
   address = ":80"
      [entryPoints.http.redirect]
      entryPoint = "https"
   [entryPoints.https]
   address = ":443"
      [entryPoints.https.tls]


# Enable ACME (Let's Encrypt) automate SSL
[acme]
email = "xxxxxxxxxxxxxxxxxxxx"
storage = "/etc/traefik/acme.json"
dnsProvider = "route53"
entryPoint = "https"
onDemand = true
onHostRule = true
acmeLogging = true

[[acme.domains]]
main = "home.turtlesystems.co.uk"

# Allow access to the Web UI
[web]
address = ":8080"

# Configure how …
Run Code Online (Sandbox Code Playgroud)

amazon-route53 traefik

5
推荐指数
2
解决办法
2597
查看次数

DNS 解析如何在具有多个网络的 Kubernetes 上工作?

我有一个 4 节点 Kubernetes 集群、1 个控制器和 3 个工作线程。下面显示了它们如何配置版本。

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-ctrl-1 Ready master 1h v1.11.2 192.168.191.100 <none> Ubuntu 18.04.1 LTS 4.15.0-1021-aws docker://18.6.1 turtle-host-01 Ready <none> 1h v1.11.2 192.168.191.53 <none> Ubuntu 18.04.1 LTS 4.15.0-29-generic docker://18.6.1 turtle-host-02 Ready <none> 1h v1.11.2 192.168.191.2 <none> Ubuntu 18.04.1 LTS 4.15.0-34-generic docker://18.6.1 turtle-host-03 Ready <none> 1h v1.11.2 192.168.191.3 <none> Ubuntu 18.04.1 LTS 4.15.0-33-generic docker://18.6.1

每个节点都有两个网络接口,为了论证eth0eth1eth1是我想要集群工作的网络。kubeadm init我使用并通过了设置控制器--api-advertise-address 192.168.191.100。然后工作节点使用该地址加入。

最后,在每个节点上,我修改了 …

kubernetes kube-dns

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

在 Azure 函数中使用 Azure Fluent SDK 时,如何使用托管服务标识创建 azure 对象?

我正在编写一个 Azure 函数,它将更新 Azure DNS 区域。该函数具有附加的托管服务标识 (MSI)。

我可以使用非流畅 SDK 读取 DNS 区域中的当前记录。但是,当我尝试使用 fluent 库做同样的事情时,我收到以下错误:

[07/11/2018 14:36:37] 执行“Function1”(失败,Id=8d34472e-956a-4ff3-a1b1-16ea6186934a)

[07/11/2018 14:36:37] System.Private.CoreLib:执行函数时出现异常:Function1.Microsoft.Azure.Management.ResourceManager.Fluent:值不能为空。

[07/11/2018 14:36:37] 参数名称:MSI_ENDPOINT。

为了可以轻松测试两个库之间的差异,我整理了一个测试函数。

using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Services.AppAuthentication;
using Microsoft.Rest;
using Microsoft.Azure.Management.Dns;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;

namespace UpdateDNS
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = "{subscription}/{rg_name}/{zone_name}/{lib}")] HttpRequest req,
            string subscription,
            string rg_name,
            string zone_name,
            string …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-functions

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

是否可以在Silex应用程序中进行条件路由?

我正在编写一个Web应用程序,它有一个前置网站,然后是一个管理控制台.我希望能够设置一个设置,当设置为true意味着在前端网站上显示保留或维护页面.

我的路由配置当前在yaml文件中,并在每个请求上读取.但现在我希望它能够聪明地知道它是否处于维护模式,以及是否将所有路由指向一个特定页面.或者它可以改变路线,以便只有一个.

我认为这可以通过基于设置加载的不同文件来完成,但是这意味着所有路由都是静态的,并且例如无法从数据库中检索.另外,在请求的设置阶段,我在从数据库中读取时遇到了问题.我将系统配置为从DB读取服务,但这似乎在设置阶段不可用,我有错吗?

任何指针都感激地收到了.

罗素

silex

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

如何在BAThell中将分隔的字符串转换为嵌套的哈希表?

我正在努力寻找一种巧妙的方法将分隔的字符串转换为哈希表.例如给定字符串:

UK_Kent_Margate
Run Code Online (Sandbox Code Playgroud)

我想将其转换为PowerShell HashTable,如下所示:

$result = @{
    UK = @{
        Kent = @{
            Margate = @{}
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

因此,我可以使用"_"字符上的拆分轻松地将字符串分解为数组,但后来我正在努力(读卡住!)进行测试并在结果哈希中声明每个嵌套的哈希值.我想我需要一个没有问题的递归函数,但我无法理解如何在结果哈希中测试正确的级别.

由于我正在编写的应用程序可以有任意数量的'_'因此嵌套我需要想出一个光滑的方法来做这个,我想不出怎么做.

有没有人之前遇到过这样的事情并有任何建议?

powershell hashtable

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

无法在Silex应用程序中找到控制器

早上好,

在过去的几周里,我一直在使用Silex开发一个应用程序,昨晚我要么对我的代码进行了更改,要么更新了作为更新作曲家的一部分,但它不起作用.

我正在使用'Igorw\ConfigServiceProvider'来加载链接到我配置的控制器的路由.但是当我访问网页时,我收到错误消息:

InvalidArgumentException: Unable to find controller "controllers.admin:index".
Run Code Online (Sandbox Code Playgroud)

我的文件如下

composer.json

{
    "require": {
        "silex/silex": "1.2.*@dev",
        "igorw/config-service-provider": "1.2.*@dev",
        "symfony/yaml": "2.5.*@dev"
    },

    "autoload": {
        "psr-4": {
            "Turtle\\Controllers\\": "src/turtle/controllers"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

配置/ routes.yml

config.routes:
  admin:
    pattern: /admin
    defaults: { _controller: 'controllers.admin:index' }
    method: GET
Run Code Online (Sandbox Code Playgroud)

网络/ index.php文件

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use \Igorw\Silex\ConfigServiceProvider;
use \Turtle\Controllers\AdminController;

$app = new Silex\Application;

$app["debug"] = true;

// load the routes
$app -> register (new ConfigServiceProvider(__DIR__ . "/../config/routes.yml"));
foreach ($app["config.routes"] as $name => $route) {
    $app …
Run Code Online (Sandbox Code Playgroud)

php silex

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