我正在使用 nginx 的 $geoip_country_code 模块根据 IP 重定向用户。我的配置代码如下所示-
server {
listen 80;
gzip on;
server_name example.com;
root html/example;
location / {
index index.html;
try_files /$geoip_country_code/index.html /index.html;
}
location ~* \.(gif|jpg|jpeg|png|js|css)$ { }
}
Run Code Online (Sandbox Code Playgroud)
想法是根据我已本地化的国家/地区重定向用户,否则用户将转到默认索引,即其他人通用的索引。当我在我的国家/地区的浏览器中打开它时,它可以完美地工作,因为我已经对其进行了本地化。但当从不同的国家/地区打开时,它会显示内部服务器错误。它不会进入默认索引页。
有人可以指出我做错了什么吗?
我目前正在开发 Elastic Beanstalk 托管应用程序,我一直在使用elbcli以下命令手动将其部署到暂存区
eb deploy app-name
Run Code Online (Sandbox Code Playgroud)
虽然这之前运行良好,但我当前的部署出现错误,我想查看部署日志以找出发生这种情况的原因。但我能从 EB 日志中得到的只是这个
有没有更好的方法让我更深入地了解部署过程,例如安装包和启动应用程序的时间点?
我尝试查看一些命令,ebcli例如events和 ,logs但我得到的只是模糊的结果,例如上图中的结果。
deployment amazon-web-services node.js amazon-elastic-beanstalk devops
这肯定不会那么复杂吧?我尝试过很多方法,但都失败了。
简单地使用本来file provisioner是最简单的选择,但没有效果。问题是,计算实例没有配置为标准的密码,并且没有密钥。
因此,这导致我尝试这样的事情:
resource "google_compute_instance" "test-build" {
...
metadata {
ssh-keys = "jon:${file("./gcloud_instance.pub")}"
}
...
provisioner "file" {
source = "test/test_file"
destination = "/tmp/test_file.txt"
connection {
type = "ssh"
private_key = "${file("./gcloud_instance")}"
agent = "false"
}
}
Run Code Online (Sandbox Code Playgroud)
再次,无济于事。(仅供参考,密钥对是我创建的,并且我确认公钥已推送到计算实例)
我什至尝试将其拆分为模块,然后一个接一个地运行..但似乎我们无法在 null_resource 中使用文件提供程序。所以这也行不通。
有没有人找到一种方法可以有效地做到这一点?
我正在 Heroku 上运行我的 Docker 应用程序,使用该heroku.yml文件来定义应用程序。我的heroku.yml 文件几乎反映了docker-compose.yml我在本地使用的文件。
1) Heroku 随后是否以集群模式运行我的应用程序,即使用多个 Docker 引擎还是仅一个?
2) 如果我的应用程序在集群模式下运行与不运行,性能会有什么差异?
它位于一个新的 azure devops 项目中。我尝试运行 Git Bash:“git clone (url)”,它显示:
remote: TF401019: The Git repository with name or identifier (name) does not exist or you do not have permissions for the operation you are attempting.
fatal: repository (url) not found
Run Code Online (Sandbox Code Playgroud)
当我尝试在 Visual Studio 代码中克隆时,出现同样的错误。我是项目负责人,所以应该拥有我认为的所有权限吗?另外,致命错误表示未找到 URL。
如果我复制此错误中的网址并粘贴到谷歌中,它可以找到它......这是怎么回事?为什么我无法克隆网址?有谁知道我可以做的解决方案或可能的检查?
---
- hosts: "{{ run_on_node|default('mysql_cluster_sql[0]')}}"
connection: "{% if migrated is defined and migrated == 'yes' %}local{% else %}ssh{% endif %}" # This works as we are assigning non boolean value
gather_facts: "{% if migrated is defined and migrated == 'yes' %}false{% else %}true{% endif %}" #This doesnt work well
tasks:
- debug: var=ansible_all_ipv4_addresses
- debug: var=ansible_default_ipv4.address
Run Code Online (Sandbox Code Playgroud)
库存文件:
[mysql_cluster_sql]
10.200.1.191 migrated=yes
Run Code Online (Sandbox Code Playgroud)
该变量根据条件具有 true 和 false 值,但即使 Gather_facts 为 false,它也会收集事实。
在 pod 定义中,我们将 nodeSelector 添加为 spec 的子项。但我不确定如何将其添加到部署 yaml 文件中
我们是否应该将其添加到模板的规范中?
apiVersion: apps/v1
kind: Deployment
metadata:
name: first-deployment
labels:
app: first
spec:
replicas: 1
template:
metadata:
name: first-deployment-pod
label:
app: first
spec:
containers:
- name: test
image: test/test
nodeSelector:
testkey: testvalue
Run Code Online (Sandbox Code Playgroud)
或者我们是否需要将其添加到部署规范中 -
apiVersion: apps/v1
kind: Deployment
metadata:
name: first-deployment
labels:
app: first
spec:
replicas: 1
nodeSelector:
testkey: testvalue
template:
metadata:
name: first-deployment-pod
label:
app: first
spec:
containers:
- name: test
image: test/test
Run Code Online (Sandbox Code Playgroud) 我正在使用 Next.js 开发一个电子商务网站,并希望将其部署到 Vercel。我已经看到 Vercel 使用 Deploy-Preview-Ship 模型 (DPS),虽然我不确定这是否违反,但我想知道是否有办法将 GitHub 操作/标签链接到我的 Vercel 部署,所以我可以部署每个 GitHub 版本,而不是每次合并到主分支。这样我就可以保持更好的语义版本控制,并且可以将 PR 和更改批量批量发布到版本中。有什么想法或者我最好在每次合并到主程序时部署到生产环境吗?
特拉菲克的朋友们大家好。
我刚刚开始研究 traefik。所有教程都展示了如何使用 traefik 与其他容器一起运行一个 docker-compose.yml 文件。我经常有许多单独的 docker-compose.yml 文件,并且非常想将它们与 traefik 一起使用。
这是我的 traefik 容器代码:
version: "3.3"
services:
traefik:
image: "traefik:v2.5"
container_name: "traefik"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
#- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=xxxxxxxxx@gmail.com"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
ports:
- "443:443"
- "8080:8080"
networks:
- "traefik"
- "external"
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
Run Code Online (Sandbox Code Playgroud)
以及我想与 traefik 一起使用的另一个示例 docker-compose:
version: '3.1'
services:
php:
image: php:7.4-apache
ports:
- 8081:80
volumes:
- ./php/www:/var/www/html/
labels:
- "traefik.enable=true"
- "traefik.http.routers.php.rule=host(`php.xxxxxx.com`)"
- "traefik.http.routers.php.entrypoints=websecure"
- …Run Code Online (Sandbox Code Playgroud) 我有一个带有 NextJS 前端和 FeathersJS/Node 后端的项目。这两个应用程序/代码库都是单独的存储库。我想开始使用 Cypress 进行 E2E 测试,但我不确定在我的设置中执行此操作的最佳方法是什么。理想情况下,测试将作为 CI 的一部分针对每个后端和前端更改运行。我目前正在为我的 CI 使用 GitHub 操作,我不确定这对我是否有帮助或伤害。
我看到有些人提到将 Cypress 放在自己的存储库中,并使用自己的 docker-compose 来处理前端和后端的旋转以运行测试。但是,我不明白这作为 CI 的一部分如何工作。预合并的新代码如何进入此存储库并作为 CI 的一部分运行?我认为这种方法会有很多问题。
我想到的一种方法是将 Cypress 作为前端 NextJS 应用程序的一部分,并让它针对后端的“暂存”或“测试”实例运行,该实例会随着每个新的后端部署而播种。这里的问题之一是,当后端发生变化时,测试将不会运行,但这不一定是问题,我想。
有什么想法吗?
devops ×10
deployment ×2
next.js ×2
node.js ×2
ansible ×1
azure ×1
azure-devops ×1
cypress ×1
docker ×1
git ×1
github ×1
kubernetes ×1
nginx ×1
nodeselector ×1
terraform ×1
testing ×1
traefik ×1
vercel ×1