标签: devops

Nginx try_files 不适用于默认的index.html

我正在使用 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)

想法是根据我已本地化的国家/地区重定向用户,否则用户将转到默认索引,即其他人通用的索引。当我在我的国家/地区的浏览器中打开它时,它可以完美地工作,因为我已经对其进行了本地化。但当从不同的国家/地区打开时,它会显示内部服务器错误。它不会进入默认索引页。

有人可以指出我做错了什么吗?

nginx devops nginx-location nginx-reverse-proxy

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

获取 Elastic BeanStalk 部署进程日志

我目前正在开发 Elastic Beanstalk 托管应用程序,我一直在使用elbcli以下命令手动将其部署到暂存区

eb deploy app-name
Run Code Online (Sandbox Code Playgroud)

虽然这之前运行良好,但我当前的部署出现错误,我想查看部署日志以找出发生这种情况的原因。但我能从 EB 日志中得到的只是这个

AWS EB CLI 日志

有没有更好的方法让我更深入地了解部署过程,例如安装包和启动应用程序的时间点?

我尝试查看一些命令,ebcli例如events和 ,logs但我得到的只是模糊的结果,例如上图中的结果。

deployment amazon-web-services node.js amazon-elastic-beanstalk devops

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

Terraform:将文件复制到 GCP 计算实例

这肯定不会那么复杂吧?我尝试过很多方法,但都失败了。

简单地使用本来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 中使用文件提供程序。所以这也行不通。

有没有人找到一种方法可以有效地做到这一点?

google-cloud-platform terraform devops

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

Heroku 是否以 Swarm 模式运行 Docker 容器?

我正在 Heroku 上运行我的 Docker 应用程序,使用该heroku.yml文件来定义应用程序。我的heroku.yml 文件几乎反映了docker-compose.yml我在本地使用的文件。

1) Heroku 随后是否以集群模式运行我的应用程序,即使用多个 Docker 引擎还是仅一个?

2) 如果我的应用程序在集群模式下运行与不运行,性能会有什么差异?

docker docker-compose devops

6
推荐指数
0
解决办法
666
查看次数

致命:在 Azure Devops 中找不到 git 存储库(但可以转到 URL)?

它位于一个新的 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。

如果我复制此错误中的网址并粘贴到谷歌中,它可以找到它......这是怎么回事?为什么我无法克隆网址?有谁知道我可以做的解决方案或可能的检查?

git azure devops azure-devops

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

在 Ansible 中使用 if 条件将 True 或 False 分配给 Gather_facts 不起作用

---
- 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,它也会收集事实。

ansible devops ansible-facts

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

如何将nodeSelector添加到部署yaml文件中?

在 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)

deployment kubernetes devops nodeselector

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

如何将 GitHub Releases 与 Vercel 结合使用?

我正在使用 Next.js 开发一个电子商务网站,并希望将其部署到 Vercel。我已经看到 Vercel 使用 Deploy-Preview-Ship 模型 (DPS),虽然我不确定这是否违反,但我想知道是否有办法将 GitHub 操作/标签链接到我的 Vercel 部署,所以我可以部署每个 GitHub 版本,而不是每次合并到主分支。这样我就可以保持更好的语义版本控制,并且可以将 PR 和更改批量批量发布到版本中。有什么想法或者我最好在每次合并到主程序时部署到生产环境吗?

github semantic-versioning devops next.js vercel

6
推荐指数
0
解决办法
1650
查看次数

具有多个 docker-compose.yml 文件的 Traefik

特拉菲克的朋友们大家好。

我刚刚开始研究 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)

docker-compose devops traefik

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

当后端和前端位于不同的仓库时,如何使用 Cypress.io 进行端到端测试?

我有一个带有 NextJS 前端和 FeathersJS/Node 后端的项目。这两个应用程序/代码库都是单独的存储库。我想开始使用 Cypress 进行 E2E 测试,但我不确定在我的设置中执行此操作的最佳方法是什么。理想情况下,测试将作为 CI 的一部分针对每个后端和前端更改运行。我目前正在为我的 CI 使用 GitHub 操作,我不确定这对我是否有帮助或伤害。

我看到有些人提到将 Cypress 放在自己的存储库中,并使用自己的 docker-compose 来处理前端和后端的旋转以运行测试。但是,我不明白这作为 CI 的一部分如何工作。预合并的新代码如何进入此存储库并作为 CI 的一部分运行?我认为这种方法会有很多问题。

我想到的一种方法是将 Cypress 作为前端 NextJS 应用程序的一部分,并让它针对后端的“暂存”或“测试”实例运行,该实例会随着每个新的后端部署而播种。这里的问题之一是,当后端发生变化时,测试将不会运行,但这不一定是问题,我想。

有什么想法吗?

testing node.js devops next.js cypress

5
推荐指数
0
解决办法
870
查看次数