程序获取不到环境变量

有个需求必须从shell 脚本里面去调用 python的脚本,然后在python脚本里面死活获取不到环境变量,然后各种尝试发现获取不到环境变量(启动容器是传入),我的环境是一个自制的docker-compose的集nginx,php,memcache,cronjob (ubuntu)四个容器。

多次测试:

  1、在/etc/crontab 文件下面 先export 环境变量然后 再执行python 程序可以获取到环境变量

  2、在shell 里面内部export 环境变量后 ,可以获取到环境变量

  3、通过歪门邪道将主机名命名为环境变量,获取主机名

  4、在shell 脚本里面 引入 . /etc/profile 或者其他 文件也可以,类似于函数调用的方式(推荐)。

第四种方式的docker-compose

  cronjob:
    image: cronjob:v14
    networks:
      lnmp:
        ipv4_address: '172.18.0.5'
    restart: always
    container_name: cronjob-dd
    command:
        - sh
        - -c
        - |
            echo "export phoneNumber=xxx" >> /etc/profile
            /usr/sbin/cron -f -L /dev/stdout

  

脚本内部

#!/bin/bash

. /etc/profile

  

原文地址:https://www.cnblogs.com/bill2014/p/15494582.html