从.env文件获取环境变量并传递给Dockerfile

时间:2018-01-23 13:20:59

标签: php docker docker-compose dockerfile

这似乎是对开发人员的巨大疏忽,因为我无法理解您不希望图像构建知道.env变量的用例。

我正在运行Laravel,我使用.env文件访问一些AWS密钥。当我尝试通过Dockerfile构建映像时,php compsoer autoload失败,因为我的项目中的一个类正在尝试使用.env变量实例化一个AWS S3Client(来自php SDK)。

我无法弄清楚如何将环境变量从.env文件传递到Dockerfile。

到目前为止,我已经有了这个,它不能用于图像构建,但当然是工作文件,如果我只是运行容器

resource:
build: 
  context: ../server
  args:
    - AWS_REGION=${AWS_REGION}
    - AWS_VERISON=${AWS_VERISON}
    - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME}
    - AWS_S3_CREDENTIALS_SECRET=${AWS_S3_CREDENTIALS_SECRET}
    - AWS_S3_CREDENTIALS_KEY=${AWS_S3_CREDENTIALS_KEY}
env_file: ./variables.env
ports:
  - "8080:80"
depends_on:
  - db
  - nosql
volumes:
  - ../server/app:/var/www/app:ro

Dockerfile,缩写因为其他一切正常,而且是一个巨大的文件

ARG AWS_REGION
ARG AWS_VERISON
ARG AWS_S3_BUCKET_NAME
ARG AWS_S3_CREDENTIALS_SECRET
ARG AWS_S3_CREDENTIALS_KEY

如何将变量传递给构建文件?

编辑:

这是运行composer脚本然后创建容器入口点的docerfile部分:

RUN composer dumpautoload && \
php artisan clear-compiled --no-interaction && \
php artisan optimize --no-interaction

ENTRYPOINT  php artisan config:cache && \
        supervisord -n && \
        tail -F /var/www/storage/logs/*

0 个答案:

没有答案
相关问题