我正在尝试使用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服务上使用监视模式和标签.
如何在标签中组合多个前端规则,以便可以在主机名和路径上代理此(和任何其他)应用程序?
早上好,
我正在设置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开发很有帮助,我只需要解决这个问题所以感谢您的帮助.我希望这一切都有意义.
谢谢,拉塞尔
我有一个模板,它总是会收到一个可迭代的对象,所以我可以迭代它.在循环内,每个'结果'中的对象可能有也可能没有我需要显示图像的属性,所以我一直在尝试使用'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) 我已经设置了自己的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) 我的本地域名是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) 我有一个 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
每个节点都有两个网络接口,为了论证eth0和eth1。eth1是我想要集群工作的网络。kubeadm init我使用并通过了设置控制器--api-advertise-address 192.168.191.100。然后工作节点使用该地址加入。
最后,在每个节点上,我修改了 …
我正在编写一个 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) 我正在编写一个Web应用程序,它有一个前置网站,然后是一个管理控制台.我希望能够设置一个设置,当设置为true意味着在前端网站上显示保留或维护页面.
我的路由配置当前在yaml文件中,并在每个请求上读取.但现在我希望它能够聪明地知道它是否处于维护模式,以及是否将所有路由指向一个特定页面.或者它可以改变路线,以便只有一个.
我认为这可以通过基于设置加载的不同文件来完成,但是这意味着所有路由都是静态的,并且例如无法从数据库中检索.另外,在请求的设置阶段,我在从数据库中读取时遇到了问题.我将系统配置为从DB读取服务,但这似乎在设置阶段不可用,我有错吗?
任何指针都感激地收到了.
罗素
我正在努力寻找一种巧妙的方法将分隔的字符串转换为哈希表.例如给定字符串:
UK_Kent_Margate
Run Code Online (Sandbox Code Playgroud)
我想将其转换为PowerShell HashTable,如下所示:
$result = @{
UK = @{
Kent = @{
Margate = @{}
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我可以使用"_"字符上的拆分轻松地将字符串分解为数组,但后来我正在努力(读卡住!)进行测试并在结果哈希中声明每个嵌套的哈希值.我想我需要一个没有问题的递归函数,但我无法理解如何在结果哈希中测试正确的级别.
由于我正在编写的应用程序可以有任意数量的'_'因此嵌套我需要想出一个光滑的方法来做这个,我想不出怎么做.
有没有人之前遇到过这样的事情并有任何建议?
早上好,
在过去的几周里,我一直在使用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) silex ×3
php ×2
traefik ×2
azure ×1
c# ×1
docker ×1
hashtable ×1
kube-dns ×1
kubernetes ×1
powershell ×1
safariwatir ×1
twig ×1
watir ×1