这些天我正在阅读很多关于如何设置和运行docker堆栈的内容.但我总是错过的一件事是如何设置特定容器通过他们的域名响应访问,而不仅仅是使用docker dns响应他们的容器名称.
我的意思是,说我有一个外部可访问的微服务,例如:users.mycompany.com,它将进入处理用户api的微服务容器
然后,当我尝试访问customer-list.mycompany.com时,它将进入处理客户列表的微服务容器
当然,使用docker dns我可以访问它们并将它们链接到docker网络,但这只适用于想要访问容器到容器,而不是Internet到容器.
有人知道我应该怎么做吗?或者是设置它的最佳方式.
我已经做了一段时间的正则表达式,但我不是关于特定规则的微妙之处的专家,我总是做(.*?)
匹配,但有限制,因为我知道它会阻止它的第一次机会,然而(.*)?
会继续并且更加贪婪.
但我没有真正的理由为什么我这么想,我只是想到它,因为我曾经读过它.
现在我想知道,有区别吗?如果是的话,它是什么......
我对"git submodule init"有一个奇怪的问题
当我使用"git submodule add url location"添加子模块时,它克隆了存储库就好了,一切正常.
当我将所有更改推回到父存储库,添加.gitmodules文件等并克隆存储库时,我尝试使用"git submodule init"初始化所有子模块
没有任何反应:(没有任何东西,没有输出,没有额外的文件,它甚至没有尝试做任何事情.
所以我想知道,我做错了什么?
.gitmodules:
bash$ cat .gitmodules
[submodule "projects/subprojectA"]
path = projects/subprojectA
url = ssh://user@bitbucket.company.com/test/projectA.git
[submodule "projects/subprojectB"]
path = projects/subprojectB
url = ssh://user@bitbucket.company.com/test/projectB.git
Run Code Online (Sandbox Code Playgroud) 我一直在浏览symfony2框架源代码.在他们的示例网站的htaccess文件中,我发现%{REQUEST_URI}::$1
如下:
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
Run Code Online (Sandbox Code Playgroud)
该规则上面的评论解释道
以下内容将所有其他查询重写为前端控制器.该条件确保如果您使用Apache别名进行大规模虚拟主机托管,则会预先设置基本路径以允许正确解析app.php文件; 它也适用于非混淆环境,提供安全,一刀切的解决方案.
但是,这并不能解释::$1
或::\2
.
他们是反向引用吗?如果没有,他们是什么?他们的目的是什么?
我似乎无法从 ACM 使用 terraform 在 API-Gateway、Route53 上获得 SSL 证书。似乎存在相互依赖的问题。
data "aws_route53_zone" "root_domain" {
name = "${var.route53_root_domain_name}"
private_zone = false
}
# The domain name to use with api-gateway
resource "aws_api_gateway_domain_name" "domain_name" {
domain_name = "${var.route53_sub_domain_name}"
certificate_arn = "${aws_acm_certificate.cert.arn}"
}
resource "aws_route53_record" "sub_domain" {
name = "${var.route53_sub_domain_name}"
type = "A"
zone_id = "${data.aws_route53_zone.root_domain.zone_id}"
alias {
name = "${aws_api_gateway_domain_name.domain_name.cloudfront_domain_name}"
zone_id = "${aws_api_gateway_domain_name.domain_name.cloudfront_zone_id}"
evaluate_target_health = false
}
}
resource "aws_acm_certificate" "cert" {
# api-gateway / cloudfront certificates need to use the us-east-1 region …
Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-route53 terraform aws-api-gateway terraform-provider-aws
我想使用安装在docker容器内的php 7来运行composer,但最终的软件将在php 5上运行,因为那就是生产服务器正在运行的东西.
我没有看到安装php 5软件和使用php 7 cli运行composer之间有任何关联,但似乎有连接.
我怎么能告诉作曲家我运行作曲家的版本并不重要,重要的是它安装的软件包.
使用 Terraform 部署 API Gateway/Lambda 并且在 Cloudwatch 中已经有了相应的日志。但是,我似乎无法找到一种使用当前部署的资源(如下)通过 Terraform 设置日志保留的方法。看起来日志组资源是我要做的地方,但不确定如何将来自 api 网关的日志流指向新的日志组。我一定遗漏了一些明显的东西......非常感谢任何建议!
resource "aws_api_gateway_account" "name" {
cloudwatch_role_arn = "${aws_iam_role.cloudwatch.arn}"
}
resource "aws_iam_role" "cloudwatch" {
name = "#{name}_APIGatewayCloudWatchLogs"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
resource "aws_iam_policy_attachment" "api_gateway_logs" {
name = "#{name}_api_gateway_logs_policy_attach"
roles = ["${aws_iam_role.cloudwatch.id}"]
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs"
}
resource "aws_api_gateway_method_settings" "name" {
rest_api_id = "${aws_api_gateway_rest_api.name.id}"
stage_name = "${aws_api_gateway_stage.name.stage_name}"
method_path = "${aws_api_gateway_resource.name.path_part}/${aws_api_gateway_method.name.http_method}"
settings …
Run Code Online (Sandbox Code Playgroud) 我不是Symfony的专家,我需要--country=XX
在symfony控制台中添加一个新的控制台选项.
此心不是一个命令,它的一个选项,其改变如何任何命令运行时,通过选择不同的数据库通过构建doctrine.dbal.dbname参数如操作上执行api_fr
,api_de
,api_es
等.
我试图寻找一种方法来做到这一点,但不幸的是一切都回来添加命令,这不是我想要做的,我想添加一个选项.
我正在构建一个API,其中一部分与Symfony 2.8配合使用,另一部分则使用Symfony 3.x. 我想两个版本的答案可能相同,但如果您知道如何在两个版本中执行此操作并且它们是分开的,请告诉我.