설정을 사용하는 도커 컨테이너가 있고 docker-compose.yml
여기에 여러 환경 변수가 도입되었습니다.
environment:
- AUTH_SECRET=some_secret
그런 다음 내 파일에 다음 값이 있습니다 .env
.
AUTH_SECRET=another_secret
문제는 내 Qwik 애플리케이션에서 .env
파일이 docker-compose.yml
.
사람들은 기대할 것이다자세한 세부 사항다루어야 할 항목덜 구체적이고, 더 일반적입니다.운영 체제.
이것은 내 코드입니다.
import { serverAuth$ } from '@builder.io/qwik-auth'
import type { Provider } from '@auth/core/providers'
import Keycloak from '@auth/core/providers/keycloak'
export const { onRequest, useAuthSession, useAuthSignin, useAuthSignout } = serverAuth$(
({ env }) => ({
secret: env.get("AUTH_SECRET"),
trustHost: true,
callbacks: {
async session({
session,
token,
}){
session.user.guid = token.sub
return session
}
},
providers: [
Keycloak({
clientId: 'Site',
clientSecret: env.get('KEYCLOAK_CLIENT_SECRET') as string,
issuer: env.get('KEYCLOAK_ISSUER') as string
}),
] as Provider[],
})
);
내 코드에서는 대신 some_scerent
에 가 표시됩니다 another_secret
.
이 동작이 정상인가요? 특정 애플리케이션에서 시스템 전체 환경 변수를 어떻게 재정의할 수 있나요?
답변1
Docker Compose에 기록되는 환경 변수 우선 순위는 다음과 같습니다(대부분 에서 복사됨).Docker Compose의 환경 변수 우선 순위):
docker compose run -e
명령줄에서 사용을 설정합니다.- 쉘에서 교체하십시오.
environment
작성 파일의 속성을 사용하여 설정합니다.--env-file
명령줄에서 매개변수를 사용합니다.env_file
작성 파일에서 이 속성을 사용합니다..env
프로젝트 디렉토리 하단에 있는 파일을 사용하여 설정하세요.- 지시어의 컨테이너 이미지에 설정합니다
ENV
. 설정은 Docker Compose 항목이 포함ARG
되거나 포함되지 않은 경우ENV
에만 평가됩니다 .Dockerfile
environment
env_file
run --env
environment
이는 작성 파일에 설정한 환경 변수가 .env
파일에서 동일한 이름을 가진 모든 변수를 재정의한다는 것을 의미합니다.
또한 여러 작성 파일을 사용할 수 있으며 나중에 명령줄에 지정된 파일은 이전에 지정된 파일을 덮어씁니다. 따라서 이 파일에는 나중에 하나 이상의 작성 파일에서 재정의할 수 있는 .env
가장 일반적인 값(물론 더 일반적인 값)이 포함되어 있다는 아이디어입니다 . Dockerfile
이러한 보다 구체적인 값은 명령줄에서 새 값을 지정하여 재정의할 수도 있습니다(예: 일회성 배포 또는 테스트용).