docker内程序如何读取dockerfile和compose.yml中设置的环境变量
docker内程序如何读取dockerfile和compose.yml中设置的环境变量
背景
compose文件中配置了服务A和服务B,其中B服务调用了A服务的接口,那么B的实现代码中该如何调用A的服务呢?
解决
compose文件中,服务B的配置加入A的接口,B的实现代码中调用此接口即可;yml文件如下:
a:
image: nlp:1.1
environment:
PROCESS_NUM: 1
deploy:
replicas: 1
networks:
- cd
b:
image: debug:1.1
environment:
PROCESS_NUM: 1
a_host: "a"
a_port: 8080
deploy:
replicas: 1
networks:
- cd
ports:
- "50370:50370"
depends_on:
- a
服务B的实现代码中,请求服务A的接口地址写为:
a_host:a_port
相当于curl a_host:a_port的效果,具体的调用详情根据语言决定
解释
实际上dockerfile和yml文件的配置方式是一样的;起初不理解,随后考虑了一下,大概理解如下:
- yml和dockerfile中的environment/ENV就相当于一个环境变量,再底层一些来讲,相当于系统的一个环境变量,服务启动的时候变量就存在了;若想用这个变量,去系统中读取就可以了,比如Python:
import os
os.environ.get('a_host', 'a_host')
- yml中的定义方式如上,他的实现方式实际上就和DNS一样;当你定义的这些服务在同一个子网的时候,服务的名称就相当于其域名,直接调用服务名就可以调用这个服务的接口;也就是说:知道了服务名,就知道了服务的地址;期间不用你做额外的操作
docker内程序如何读取dockerfile和compose.yml中设置的环境变量的更多相关文章
- Docker 内程序时间设置,很重要
原文:Docker 内程序时间设置,很重要 重要!!!!! 创建容器时候需要修改一个参数,设置tomcat的时区 -e TZ="Asia/Shanghai" -v /etc/loc ...
- 设置PATH 环境变量、pyw格式、命令行运行python程序与多重剪贴板
pyw格式简介: 与py类似,我认为他们俩卫衣的不同就是前者运行时候不显示终端窗口,后者显示 命令行运行python程序: 在我学习python的过程中我通常使用IDLE来运行程序,这一步骤太过繁琐( ...
- TPanel的默认颜色存储在dfm中,读取后在Paint函数中设置刷子的颜色,然后填充整个背景
声明如下: TCustomPanel = class(TCustomControl) private FFullRepaint: Boolean; FParentBackgroundSet: Bool ...
- Windows7中Java64位环境变量配置:javac不是内部命令或外部命令,也不是可运行的程序或批处理文件。
按照默认设置安装完JDK(Java Developement Kits)后,一般默认路径为:C:\Program Files\Java\jdk1.8.0_05_x64\文件夹. 然后配置环境变量:&q ...
- 一键设置Fluent环境变量小程序
使用视频教程优酷播放地址: https://v.youku.com/v_show/id_XNDU2MTkwNDg5Mg==.html?spm=a2hzp.8244740.0.0 一键设置环境变量小软件 ...
- Docker Compose 引用环境变量
在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景.本文集中介绍 docker compose 引用环境变量的方式.说明:本文的演示环境为 ubu ...
- Docker系列(三)Dockerfile 离线构建镜像
一.Dockfile介绍: Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfil ...
- Docker入门与实践之 Dockerfile 语法详解
一.Dockerfile 概述 Dockerfile是docker程序的解释脚本文件,Dockerfile 是一条一条的指令,Docker程序将dockerfile中的一条条指令编译成Linux可执行 ...
- 附004.Docker Compose环境变量说明
一 环境变量概述 Compose支持在docker-compose执行命令的文件夹中,名为.env的环境变量配置文件声明默认环境变量. 二 定义变量 2.1 语法规则 Compose建议env文件中的 ...
随机推荐
- [OpenCV-Python] OpenCV 中的图像处理 部分 IV (三)
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 19 Canny 边缘检测 目标 • 了解 Canny 边缘检测的概念 • 学习函数 cv2.Canny() 1 ...
- hdu 1166 敌兵布阵【线段树】(求给定区间和)
题目链接:https://vjudge.net/contest/182746#problem/B 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ...
- 洛谷AC破百题纪念!
- 在 Windows 10 中使用 OpenAI Spinning Up
前段时间,openAI 发布了 Spinning Up ,本篇博客将介绍如何在 Windows 系统中使用 Spinning Up. 什么是 Spinning Up 先来说说 Spinning Up, ...
- MySQL数据库crash的问题分析
[问题] 生产环境有多台slave服务器,不定期的会crash,下面是error log中的堆栈信息 Thread pointer: 0x7f1e54b26410 Attempting backtra ...
- OutputStreramWriter和InputStreamReader类
整个IO类中除了字节流和字符流还包括字节和字符转换流. OutputStreramWriter将输出的字符流转化为字节流 InputStreamReader将输入的字节流转换为字符流 但是不管如何操作 ...
- 5.27 Test
1.COGS.2039. 树的统计 思路: 各种方法. 代码: 1.遍历树1 时间 0.314 s 平均内存 2.96 MB #include<cstdio> using name ...
- Windows7的MySQL数据库的安装
碰巧重装了系统,需要重新安装MySQL. 1.进入官网下载:https://dev.mysql.com/ 2.severonle 3.alt+n 4.alt+x
- 20172302 《Java软件结构与数据结构》第三周学习总结
2018年学习总结博客总目录:第一周 第二周 第三周 教材学习内容总结 第五章 队列 1.队列是一种线性集合,其元素从一端加入,从另一端删除:队列元素是按先进先出(FIFO(First in Firs ...
- Android笔记(四):RecyclerView
RecyclerView是ListView的增强版.有了它之后,你就可以抛弃ListView了. recycle,重复利用.在ListView里,我们得自己写重复利用View的代码,而Recycler ...