我是使用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) 我正处于构建网络应用程序的早期阶段。我打算使用 Keycloak 作为身份提供者来保护后端。在我的本地计算机上,我将 Keycloak 和后端都作为 docker 容器运行,但在不同的网络上,因为最终在生产中,我希望运行 Keycloak 的身份验证服务器与后端分别运行,例如account.example.com和api.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) 我总是ALLOWED_HOSTS从 Django 中的环境变量中设置我的。在我的开发中,.env我总是设置ALLOWED_HOSTS=.localhost,.127.0.0.1和生产ALLOWED_HOSTS=mydomain.dom,my_ip_address
现在我正在熟悉 Docker,问题是它ALLOWED_HOSTS在生产中的价值是什么。它是否应该保留为 localhost,因为我知道 localhost 将引用主机容器,或者我应该将其设置为我的域。我正在使用 Nginx 进行反向代理来转发请求。
我正在使用"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.
我尝试了一些在网上找到的解决方案,但还没有成功