4

에 확장하지. 이 문제를 해결할 방법이 있습니까? 변수는 값이없는 경우, 로컬로 해결되기 때문에환경 변수는 내가 다음과 같은 명령을 사용하는 경우 것 같다 openshift

편집 그의 대답에 timo.rieber @에서 언급 한 바와 같이

이 작동하지 않을 수 있습니다.

$ rhc env set VARIABLE="$OPENSHIFT_DATA_DIR/file" 
Setting environment variable(s) ... done 
$ rhc env show VARIABLE 
VARIABLE=/file 

는 그러나, 나는 즉시 확장을 피하기 위해 작은 따옴표를 사용하는 경우 : 사실

$ rhc env set VARIABLE='$OPENSHIFT_DATA_DIR/file' 
Setting environment variable(s) ... done 
$ rhc env show VARIABLE 
VARIABLE=$OPENSHIFT_DATA_DIR/file 

흥미롭게도,이 잘 작동하지 않습니다 (이 프로세스에 의해 사용되는 경우, 즉 더 확장은 발생하지 않습니다) 이번에는 분명히 올바르게 설정 되더라도.

+0

내 대답을 게시하기 전에 큰 따옴표, 작은 따옴표 및 백틱 (사전 실행)을 사용하여 일부 변형을 시도했지만 운이 없었습니다. 쉘 프로파일 스크립트 (예 :'.bash_profile')로 제 제안을 시도하여'GIT_SSH'를 설정 했습니까? –

+1

~/.bash_profile은 opensshift에서 쓸 수 없습니다. 나는 아마도 큰 문제 (개인 bitbucket repo에서 일부 종속성 배포)에 대한 해결 방법 근처에 있지만 이것은 실현 가능하지 않은 것 같습니다. – giallu

+0

이 질문이 게시 된 지 2 년이 지났습니다. 환경 변수를 확장하는 방법에 대한 업데이트가 있습니까? –

답변

2

문제 설명 :

$OPENSHIFT_DATA_DIR의 값은 로컬 컴퓨터에서 해결됩니다. 이 변수가 시스템에 설정되어 있지 않으므로 대부분 비어 있습니다.

$OPENSHIFT_DATA_DIR과 같은 기본 제공 서버 측 환경 변수 값을 읽을 수 없습니다. 외부에서 설정된 변수 만 노출됩니다.

1. 먼저 정의 : 경로를 구축

설정이 환경 변수와 프로그램 코드 내에서 사용할 :

[email protected]:~$ rhc env list 

[email protected]:~$ rhc env set VARIABLE="file" 
Setting environment variable(s) ... done 

[email protected]:~$ rhc env list 
VARIABLE=file 

[email protected]:~$ rhc env unset VARIABLE 
Removing environment variables is a destructive operation that may result in loss of data. 
VARIABLE 

Are you sure you wish to remove the environment variable(s) above from application 'yourapp'?(yes|no):yes 

Removing environment variable(s) ... done 

[email protected]:~$ rhc env list 

해결 방법을 다음과 같은 예에 의해이 시도 할 수 있습니다 환경 변수를 정의하여 내장 환경 변수를 정의합니다.

[email protected]:~$ rhc env set MY_ENV_VAR_FOR_BASE_DIR="OPENSHIFT_DATA_DIR" 
Setting environment variable(s) ... done 

2. "

(InteractiveConsole) 
>>> import os 

>>> os.environ.get("MY_ENV_VAR_FOR_BASE_DIR") 
'OPENSHIFT_DATA_DIR' 

>>> os.environ.get("OPENSHIFT_DATA_DIR") 
'/var/lib/openshift/your_user_dir/app-root/data/' 

>>> os.environ.get("MY_TARGET_FOLDER") 
'file' 

>>> os.path.join(os.environ.get(os.environ.get("MY_ENV_VAR_FOR_BASE_DIR")), os.environ.get("MY_TARGET_FOLDER")) 
'/var/lib/openshift/your_user_dir/app-root/data/file' 
+0

이것은 좋은 대답이지만 실제로 프로세스를 제어하지 않으면 사용할 수 없다고 생각합니다. 사실, 내가 설정하기를 원하는 변수는 GIT_SSH이며,이 변수는 연결을 설정하기 위해 git에 의해 읽히고 사용됩니다. – giallu

+1

아마도'GIT_SSH'를 동적으로 덮어 쓰거나 설정하기 위해 원격'.bash_profile' 내에서 제안 된 해결책을 사용할 수 있습니다. 나는 그것을 시도 할 줄 ... –

0

내가 실행 불러 경로 구축

코드 내에서
[email protected]:~$ rhc env set MY_TARGET_FOLDER="file" 
Setting environment variable(s) ... done 

3.에게 (파이썬 예) 지정된 디렉토리에 폴더를 지정하는 두 번째 환경 변수를 정의 rhc env set ... "하지만 내 노드 익스프레스 서버는"export FOO "를 실행할 때까지 'undefined'가 표시됩니다. 그러니 그걸 시도해보십시오.

0

비록이 질문이 꽤 오래되었지만 나는 아마도 현재 해결책이 무엇인지 게시 할 것이라고 생각했습니다. 환경 변수는 OpenShift 포드에서 $ (VAR) 구문을 사용하여 쉘에서와 같이 약간 확장되므로 변수를 설정할 수 있습니다. DATABASE_URL;

oc set env dc service -e 'DATABASE_URL=mysql://user:[email protected]$(MARIADB_SERVICE_HOST):$(MARIADB_SERVICE_PORT)/dbname' 

이러한 변수는 배포시 확장됩니다.