웹 서버와 데이터베이스로 구성된 서비스를 모든 도킹 컨테이너에 작성하려고합니다. 현재 데이터베이스 자격 증명을 포함하는 두 환경에 동일한 환경 파일을 만들려고합니다. 불행히도 데이터베이스를 만들려고 할 때 비어있는 것으로 나타납니다. 두 구성 요소 모두에 대해 단일 환경 파일로 프로젝트를 만들려면 어떻게해야합니까?환경 변수를 도커 파일 빌드에 전달하십시오.
다음version: '2'
services:
db:
build:
context: .
dockerfile: Dockerfile-db
ports:
- '5433:5432'
env_file:
- env
web:
build: .
ports:
- '8000:8000'
command: venv/bin/python manage.py runserver 0.0.0.0:8000
depends_on:
- db
env_file:
- env
데이터베이스를 만들기위한 책임을 내 Dockerfile-DB 파일의 일부입니다 : 여기 내 고정 표시기 - compose.yml입니다
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y postgresql-9.5-postgis-2.2
USER postgres
ARG DB_PASSWORD
ARG DB_NAME
RUN echo $DB_PASSWORD
RUN /etc/init.d/postgresql start && \
psql --command "ALTER USER postgres WITH PASSWORD '$DB_PASSWORD';" && \
psql --command "CREATE DATABASE $DB_NAME;" && \
psql --command "\\c $DB_NAME" && \
psql --command "CREATE EXTENSION postgis;" && \
psql --command "CREATE EXTENSION postgis_topology;"
그리고 내 ENV 파일은 다음 한 구조 :
DB_NAME=some_name
DB_USER=postgres
DB_PASSWORD=some_password
DB_HOST=db
DB_PORT=5432
나는이 메시지를 계속 --build-arg가 n 지원되지 않습니다. 'docker-compose' 버전 때문일 수 있습니까? (나는 1.8을 달리고있다) 사용법 : 빌드 [옵션] [서비스 ...] 옵션 : --force-rm 중간 컨테이너를 항상 제거한다. --no-cache 이미지를 빌드 할 때 캐시를 사용하지 마십시오. --pull 항상 최신 버전의 이미지를 가져 오려고 시도하십시오. – gonczor
가능합니다. 'docker-compose build --help'가'--build-arg' 옵션을 보이지 않는다면, 도커를 수정해야합니다. – yamenk
도움을 주셔서 감사합니다. 그것은 효과가 있었다. 그리고 나는 해결 방법을 생각해 냈다. 방금 명령에'--build-args $ (cat env)'를 추가했습니다. 당신이 대답에 그것을 더하는 것이 친절하다면 나는 감사 할 것입니다. – gonczor