亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

docker啟動(dòng)時(shí)環(huán)境變量不生效的解決方法

 更新時(shí)間:2024年03月12日 14:55:09   作者:XUchenmp  
因項(xiàng)目需要多處部署,所以打包成docker鏡像以便于部署,本文主要介紹了docker啟動(dòng)時(shí)環(huán)境變量不生效的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下

前言

因項(xiàng)目需要多處部署,為了部署的方便,于是準(zhǔn)備將項(xiàng)目環(huán)境打包成docker鏡像以便于部署。mq、mysql這些在倉(cāng)庫(kù)中都有現(xiàn)成的鏡像,雖然java和nginx的也都有,但是不知道當(dāng)時(shí)是怎么想的,就不想搞太多鏡像,也打算自己實(shí)踐一下docker踩踩坑,就拉了個(gè)debian的環(huán)境自己配。

問(wèn)題

按照網(wǎng)上的教程在容器中配置Java環(huán)境,這點(diǎn)沒(méi)什么難的,學(xué)過(guò)Java的都能做到,我也確實(shí)成功了。然后在重啟驗(yàn)證時(shí)發(fā)現(xiàn)環(huán)境變量失效了,然后在網(wǎng)上搜索時(shí)發(fā)現(xiàn)在/etc/profile中設(shè)置的環(huán)境變量每次進(jìn)入時(shí)都需要source /etc/profile,這有些麻煩,然后找到了另外一種方式,可以把環(huán)境變量寫(xiě)入~/.bashrc中,每次打開(kāi)新的shell時(shí)都會(huì)執(zhí)行,聽(tīng)著就比較符合我們的要求了,然后重啟以及重新進(jìn)入shell都驗(yàn)證一下,發(fā)現(xiàn)Java環(huán)境都生效。

然后寫(xiě)個(gè)shell腳本,讓容器在啟動(dòng)時(shí)運(yùn)行我的各個(gè)服務(wù),退出容器并打包成鏡像。本以為大功告成了,誰(shuí)知在測(cè)試鏡像能否正常運(yùn)行我的各個(gè)服務(wù)時(shí)報(bào)錯(cuò)了,又是Java環(huán)境問(wèn)題。但是之前已經(jīng)驗(yàn)證過(guò)環(huán)境沒(méi)問(wèn)題,進(jìn)入容器查看Java環(huán)境發(fā)現(xiàn)一切正常,沒(méi)有問(wèn)題。于是退出容器重啟,結(jié)果還是因?yàn)闆](méi)有Java環(huán)境報(bào)錯(cuò),這就很奇怪了,有點(diǎn)像量子力學(xué)了,觀察就有,不觀察就沒(méi)有。

既然是shell腳本運(yùn)行的時(shí)候沒(méi)有Java環(huán)境,那我們可以在腳本中配置Java環(huán)境就能解決這個(gè)問(wèn)題,確實(shí)也有不少執(zhí)行腳本都這么做,但是我還是想知道環(huán)境變量為什么失效。

解決思路

首先懷疑的肯定是加載順序,自己寫(xiě)的腳本執(zhí)行得比~/.bashrc快。那么在init.sh中寫(xiě)入以下內(nèi)容。

在這里插入圖片描述

在~/.bashrc中寫(xiě)入以下內(nèi)容

在這里插入圖片描述

然后把容器提交成鏡像后啟動(dòng)鏡像docker run -itd config_init_test:2.0 /init.sh
在Docker Desktop中發(fā)現(xiàn)壓根就沒(méi)執(zhí)行~/.bashrc中的內(nèi)容

在這里插入圖片描述

順著~/.bashrc中的命令沒(méi)有執(zhí)行這個(gè)線索去查,仔細(xì)閱讀之后才意識(shí)到我在上面加粗的那句“每次打開(kāi)新的shell時(shí)都會(huì)執(zhí)行,那不打開(kāi)shell就不會(huì)執(zhí)行,而絕大多數(shù)運(yùn)行鏡像的場(chǎng)景都是后臺(tái)運(yùn)行,不會(huì)打開(kāi)shell,環(huán)境變量的設(shè)置理所當(dāng)然的失效。

解決方案

1、在shell腳本設(shè)置環(huán)境變量
2、在Dockerfile中使用ENV命令
一開(kāi)始我是用的方案2,但是語(yǔ)法沒(méi)寫(xiě)對(duì)導(dǎo)致我以為這種用法不行才換的寫(xiě)入~/.bashrc這個(gè)方案,然后就踩了這個(gè)坑。。。

總結(jié)

對(duì)Linux不熟悉,平時(shí)接觸得也少,這算是Linux的基礎(chǔ)知識(shí)吧,沒(méi)事還是多學(xué)學(xué)基礎(chǔ)知識(shí),特別是想要用好docker的話Linux基礎(chǔ)知識(shí)必不可少。

到此這篇關(guān)于docker啟動(dòng)時(shí)環(huán)境變量不生效的解決方法的文章就介紹到這了,更多相關(guān)docker啟動(dòng)時(shí)環(huán)境變量不生效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker-compose java.net.UnknownHostException問(wèn)題

    docker-compose java.net.UnknownHostException問(wèn)題

    這篇文章主要介紹了docker-compose java.net.UnknownHostException問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker volume使用詳解及實(shí)例

    Docker volume使用詳解及實(shí)例

    這篇文章主要介紹了Docker volume使用詳解及實(shí)例的相關(guān)資料,并附簡(jiǎn)單實(shí)例,幫助大家學(xué)習(xí)參考,需要的朋友可以看下
    2016-11-11
  • Docker安裝配置Redis鏡像的實(shí)現(xiàn)步驟

    Docker安裝配置Redis鏡像的實(shí)現(xiàn)步驟

    Redis是一個(gè)由Salvatore Sanfilippo寫(xiě)的key-value存儲(chǔ)系統(tǒng),是跨平臺(tái)的非關(guān)系型數(shù)據(jù)庫(kù)。Redis 是一個(gè)開(kāi)源的使用 ANSI C 語(yǔ)言編寫(xiě)、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選持久性的鍵值對(duì)(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù),并提供多語(yǔ)言API,本文帶你在Docker安裝配置它
    2021-11-11
  • Docker構(gòu)建Jar鏡像的方法實(shí)現(xiàn)

    Docker構(gòu)建Jar鏡像的方法實(shí)現(xiàn)

    本文主要介紹了Docker構(gòu)建Jar鏡像的方法實(shí)現(xiàn),主要包括編寫(xiě)Dockerfile、構(gòu)建鏡像、測(cè)試鏡像等操作,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 使用Docker構(gòu)建開(kāi)發(fā)環(huán)境的方法步驟(?Windows和mac)

    使用Docker構(gòu)建開(kāi)發(fā)環(huán)境的方法步驟(?Windows和mac)

    利用Docker,我們可以做很多事情。所以本文就詳細(xì)介紹了使用Docker構(gòu)建開(kāi)發(fā)環(huán)境的方法步驟,分為?Windows和mac版本,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12
  • 打包docker鏡像推送到遠(yuǎn)程服務(wù)器并部署到k8s的方法步驟

    打包docker鏡像推送到遠(yuǎn)程服務(wù)器并部署到k8s的方法步驟

    本文主要介紹了打包docker鏡像推送到遠(yuǎn)程服務(wù)器并部署到k8s的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • docker容器中登陸并操作postgresql的實(shí)現(xiàn)

    docker容器中登陸并操作postgresql的實(shí)現(xiàn)

    本文主要介紹了docker容器中登陸并操作postgresql的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • 使用docker部署django的詳細(xì)步驟

    使用docker部署django的詳細(xì)步驟

    當(dāng)用Django框架開(kāi)發(fā)的網(wǎng)站項(xiàng)目完成后上線的話可以用物理主機(jī)、虛擬機(jī)來(lái)部署,也可以容器,下面這篇文章主要給大家介紹了關(guān)于使用docker部署django的詳細(xì)步驟,需要的朋友可以參考下
    2022-08-08
  • docker生命周期管理和鏡像管理命令詳解

    docker生命周期管理和鏡像管理命令詳解

    Docker通過(guò)容器技術(shù)提供了一種輕量級(jí)、快速部署和可移植的應(yīng)用程序運(yùn)行環(huán)境,極大地簡(jiǎn)化了應(yīng)用程序的部署和管理過(guò)程,提高了開(kāi)發(fā)和運(yùn)維的效率,這篇文章主要介紹了docker生命周期管理和鏡像管理命令,需要的朋友可以參考下
    2023-08-08
  • 一些常見(jiàn)的精簡(jiǎn)Docker?file規(guī)則總結(jié)

    一些常見(jiàn)的精簡(jiǎn)Docker?file規(guī)則總結(jié)

    這篇文章主要介紹了一些常見(jiàn)的精簡(jiǎn)Docker?file規(guī)則的相關(guān)資料,這些精簡(jiǎn)規(guī)則有助于優(yōu)化Dockerfile,生成更高效、簡(jiǎn)潔的鏡像,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11

最新評(píng)論