小编the*_*pan的帖子

如何正确设置环境变量 Gitlab CI/CD 和 Docker

我是使用Gitlab CI/CD 的Docker和 CI/CD新手。我的.envDjango 项目的根目录中有一个文件,其中包含我的环境变量,例如SECRET_KEY=198191891. 该.env文件包含在.gitignore. 我已经在 CI/CD 的 Gitlab 设置中设置了这些变量。但是,Gitlab CI/CD 设置中设置的环境变量似乎不可用

另外,Gitlab CI/CD 自动化过程应该如何创建用户和数据库来连接和运行测试?在我的本地机器上为数据库创建数据库和用户时,我登录到容器docker exec -it <postgres_container_name> /bin/sh并创建了 Postgres 用户和数据库。

这是我的相关文件。

docker-compose.yml

version: "3"
services:
  postgres:
    image: postgres
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data/
  web:
    build: .
    command: /usr/local/bin/gunicorn writer.wsgi:application -w 2 -b :8000
    environment:
      DEBUG: ${DEBUG}
      DB_HOST: ${DB_HOST}
      DB_NAME: ${DB_NAME}
      DB_USER: ${DB_USER}
      DB_PORT: ${DB_PORT}
      DB_PASSWORD: ${DB_PASSWORD}
      SENDGRID_API_KEY: ${SENDGRID_API_KEY}
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} …
Run Code Online (Sandbox Code Playgroud)

django gitlab docker gitlab-ci docker-compose

10
推荐指数
2
解决办法
7557
查看次数

当后端在 Docker 容器中运行时,Keycloak 令牌验证失败

我正处于构建网络应用程序的早期阶段。我打算使用 Keycloak 作为身份提供者来保护后端。在我的本地计算机上,我将 Keycloak 和后端都作为 docker 容器运行,但在不同的网络上,因为最终在生产中,我希望运行 Keycloak 的身份验证服务器与后端分别运行,例如account.example.comapi.example.com分别

在本地,我的 Keycloak 容器可以通过基本 URL 访问http://localhost:8080/auth,后端通过http://test.localhost:8000/

我在 Keycloak 领域创建了一个客户端,其访问类型是机密的。我正在使用授权代码授予类型生成令牌。在此输入图像描述

因此,后端的每个 REST API 端点都会验证传递到授权标头的令牌,然后在处理请求之前调用 Keycloak 服务器来验证令牌。

我目前遇到的问题是令牌验证失败并响应

{"error":"invalid_token","error_description":"Token verification failed"}'
Run Code Online (Sandbox Code Playgroud)

经过调查,显然,这是因为我从后端 API 容器调用 Keycloak 服务器。如果我在后端 docker 容器内使用curl 生成令牌,则我收到的令牌可以正常验证,但在容器外部生成的令牌则不能。

我用作python-keycloakKeycloak REST API 的包装器

from keycloak import KeycloakOpenID


self._keycloak = KeycloakOpenID(
            server_url='http://host.docker.internal:8080/auth/',
            realm_name='myrealm',
            client_id='myclient',
            client_secret_key='mysecret,
        )

if "HTTP_AUTHORIZATION" not in request.META:
       
        return JsonResponse(
            {"detail": NotAuthenticated.default_detail},
            status=NotAuthenticated.status_code,
        )

 auth_header = request.META.get("HTTP_AUTHORIZATION").split()
 token = auth_header[1] if len(auth_header) == …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 docker keycloak

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

使用 Docker 时如何在生产中设置 ALLOWED_HOSTS Django 设置?

我总是ALLOWED_HOSTS从 Django 中的环境变量中设置我的。在我的开发中,.env我总是设置ALLOWED_HOSTS=.localhost,.127.0.0.1和生产ALLOWED_HOSTS=mydomain.dom,my_ip_address

现在我正在熟悉 Docker,问题是它ALLOWED_HOSTS在生产中的价值是什么。它是否应该保留为 localhost,因为我知道 localhost 将引用主机容器,或者我应该将其设置为我的域。我正在使用 Nginx 进行反向代理来转发请求。

django docker

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

npm 错误!无法安装,因为它不包含 package.json 文件 Angular Firebase 函数

我正在使用"firebase-functions": "^3.6.0""firebase-tools": "^8.0.0"来部署我的Angular: 10.0.14应用程序。一切都工作正常,直到我决定将一些组件移动到使用该命令创建的库中ng generate library,并将该包作为我的项目中的子模块./projects/my-lib

我使用构建库ng build my-lib

然后在我package.json安装的 lib 文件中

"my-lib": "file:dist/my-lib"

我在本地安装了该包,当我在本地测试它时它工作正常,但使用ng deploy进行部署引发了错误

npm ERR! Could not install from "dist/mce-lib" as it does not contain a package.json file.

我尝试了一些在网上找到的解决方案,但还没有成功

node.js firebase angular

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