我正在尝试创建一个包含Web服务器和数据库的服务,这两个组件都在Docker容器中。目前,我正在尝试为它们创建相同的环境文件,其中包含数据库凭据。不幸的是,当我尝试使用它构建数据库时,它们却是空的。如何创建一个具有单一环境文件的项目,用于同时管理这两个组件?以下是我的docker-compose.yml文件:
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文件的一部分,负责创建数据库:
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
。这可能是由于docker-compose
版本引起的吗?(我正在运行1.8)用法:build [选项] [SERVICE...]选项: --force-rm 始终删除中间容器。 --no-cache 构建镜像时不使用缓存。 --pull 始终尝试拉取图像的新版本。 - gonczordocker-compose build --help
没有显示--build-arg
选项,则需要更新Docker Compose。 - yamenk--build-args $(cat env)
。如果您能够将其添加到答案中,我将不胜感激。 - gonczor