有个需求必须从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