docker内程序如何读取dockerfile和compose.yml中设置的环境变量
生活随笔
收集整理的這篇文章主要介紹了
docker内程序如何读取dockerfile和compose.yml中设置的环境变量
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
docker內(nèi)程序如何讀取dockerfile和compose.yml中設(shè)置的環(huán)境變量
背景
compose文件中配置了服務(wù)A和服務(wù)B,其中B服務(wù)調(diào)用了A服務(wù)的接口,那么B的實現(xiàn)代碼中該如何調(diào)用A的服務(wù)呢?
解決
compose文件中,服務(wù)B的配置加入A的接口,B的實現(xiàn)代碼中調(diào)用此接口即可;yml文件如下:
a:image: nlp:1.1environment:PROCESS_NUM: 1deploy:replicas: 1networks:- cdb:image: debug:1.1environment:PROCESS_NUM: 1a_host: "a"a_port: 8080deploy:replicas: 1networks:- cdports:- "50370:50370"depends_on:- a服務(wù)B的實現(xiàn)代碼中,請求服務(wù)A的接口地址寫為:
a_host:a_port相當(dāng)于curl a_host:a_port的效果,具體的調(diào)用詳情根據(jù)語言決定
解釋
實際上dockerfile和yml文件的配置方式是一樣的;起初不理解,隨后考慮了一下,大概理解如下:
- yml和dockerfile中的environment/ENV就相當(dāng)于一個環(huán)境變量,再底層一些來講,相當(dāng)于系統(tǒng)的一個環(huán)境變量,服務(wù)啟動的時候變量就存在了;若想用這個變量,去系統(tǒng)中讀取就可以了,比如Python:
- yml中的定義方式如上,他的實現(xiàn)方式實際上就和DNS一樣;當(dāng)你定義的這些服務(wù)在同一個子網(wǎng)的時候,服務(wù)的名稱就相當(dāng)于其域名,直接調(diào)用服務(wù)名就可以調(diào)用這個服務(wù)的接口;也就是說:知道了服務(wù)名,就知道了服務(wù)的地址;期間不用你做額外的操作
轉(zhuǎn)載于:https://www.cnblogs.com/wswang/p/9360181.html
總結(jié)
以上是生活随笔為你收集整理的docker内程序如何读取dockerfile和compose.yml中设置的环境变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么梦到的地方不要去
- 下一篇: 梦到小猫哭什么意思