欢迎光临
我们一直在努力

docker-compose在docker python:3中缺少环境变量

本站教程收集整理的这篇文章主要介绍了docker-compose在docker python:3中缺少环境变量,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

虽然我的配置看起来不错,但是我的python:3映像似乎没有设置预期的DJANGO_SECRET_KEY,至少在Dockerfile尝试运行迁移的时候

$docker-compose config
services:
  api:
    build:
      context: /Users/ben/Projects/falcon/falcon-BACkend
      dockerfile: Dockerfile
    depends_on:
    - db
    - redis
    environment:
      DJANGO_SECRET_KEY: 'some-secret-that-works-elsewhere'
$
$docker-compose up --build api
[...]
 Step 6/7 : RUN echo `$DJANGO_SECRET_KEY`
 ---> Running in fbfb569c0191

[...]
django.core.exceptions.ImproperlyConfigured: Set the DJANGO_SECRET_KEY env variable
ERROR: service 'api' Failed to build: The command '/bin/sh -c python manage.py 便宜香港vps migrate' returned a non-zero code: 1

但是,最后一行
CMD python manage.py runserver 0.0.0.0:8001 –setTings = falcon.setTings.dev-microservice确实会根据需要启动,并设置了必要的环境变量.

# Dockerfile -- api

FROM python:3

RUN pip3 -q install -r requirements.txt
RUN echo `$DJANGO_SECRET_KEY`
RUN python manage.py migrate --setTings=falcon.setTings.dev-microservice # <-- why does this not work
CMD python manage.py runserver 0.0.0.0:8001 --setTings=falcon.setTings.dev-microservice

为什么Dockerfile的倒数第二行由于未设置环境变量而失败,而最后一个却按预期工作呢?

解决方法:

RUN仅在构建映像时使用. CMD是从映像启动容器时启动的命令.如果在构建映像时运行迁移是错误的,则说明迁移正在构建数据库,并且您希望每次在runserver之前运行它

# Dockerfile -- api

FROM python:3

RUN pip3 -q install -r requirements.txt
RUN echo `$DJANGO_SECRET_KEY`
CMD /bin/bash -c "python manage.py migrate --setTings=falcon.setTings.dev-microservice && python manage.py runserver 0.0.0.0:8001 --setTings=falcon.setTings.dev-microservice"

这是在docker中启动django的正确方法,因为您要在启动服务器时在生产环境上运行迁移.建立影像时不在电脑上…

本站总结

以上是本站教程为你收集整理的docker-compose在docker python:3中缺少环境变量全部内容,希望文章能够帮你解决docker-compose在docker python:3中缺少环境变量所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。