2017-05-08 1 views
1

node12와 mongodb (그래서 컨테이너 2 개)가있는 docker-compose.yml 파일을 다중 컨테이너 응용 프로그램에 작성하고 일부 옵션을 구성 할 수 있도록 서버 주소 및 포트를 선택하려고합니다. 내가 ENV 변수로를 설정하는 고정 표시기 - compose.yml에서 다음 무엇을 작성했습니다, 그렇게하려면 내 응용 프로그램의 소스 코드 내에서 Docker Compose : env 변수 변경

.. 
    web: 
     environment: 
     - PORT=3000 
     - ADDRESS=xxx.xxx.xxx.xxx 
.. 

, 나는 이러한 변수를 참조 process.env.PORTprocess.env.ADDRESS를 사용합니다.

그러나 이러한 값을 변경하려면 어떻게해야합니까? 예를 들어 PORT=3001을 설정 하시겠습니까? 다시 docker-compose builddocker-compose up을 사용해야하고 mongodb 컨테이너가 포함 된 모든 응용 프로그램을 빌드해야합니까?

+2

환경 변수는 런타임 지시 사항이며,'docker-compose.yml'에서 환경 변수를 변경 한 다음'docker-compose up'을 다시 실행하십시오. – johnharris85

+0

johnharris85가 언급했듯이, docker-compose를 다시 실행하면 충분합니다. docker-compose.yml에서 환경 변수를 사용하는 대신 환경 파일을 사용할 수도 있습니다. https://docs.docker.com/compose/env-file/ –

답변

2

도커 작성 및 도커 작성을 다시해야하며 mongodb 컨테이너가 포함 된 모든 응용 프로그램을 빌드해야합니까?

아니요 build, 그냥 up입니다. 그것들은 빌드 옵션이 아닌 런타임 옵션입니다. docker-compose.yml 파일에서 해당 파일을 변경 한 다음 docker-compose up을 다시 수행하면 새 환경 변수로 컨테이너를 다시 만들어야합니다.

다른 방법으로, 쉽게 변화를 확인하기 위해 docker-compose.yml 파일 외부 환경 변수를 지정할 수 있습니다 이러한 방법의

  1. 하나는 당신이 docker-compose 양식을 실행할 같은 폴더에 .env 파일을 사용하는 것입니다 (대한 https://docs.docker.com/compose/env-file/ 참조 그것에 관한 정보).
  2. 다른 옵션은 쉘에서 환경 변수를 보간하는 것입니다. docker-compose을 실행하기 전에 쉘에 - PORT=${APP_PORT}과 같이 지정할 수 있습니다. export APP_PORT=3000 자세한 내용은 https://docs.docker.com/compose/environment-variables/을 참조하십시오.
-1

env_file 설정을 사용하고 환경 파일을 같은 줄에 정의 할 수 있습니다. 여기

내 고정 표시기 - compose.yml 같은 모습입니다 :

services: 
    web: 
    env_file: variables.env 

가 고정 표시기-작성은 ENV 파일의 각 줄은 VAR=VAL 형식으로 기대 유의하시기 바랍니다. .env 파일 안에 export을 사용하지 마십시오.

관련 문제