国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Docker】dockerfile部署conda并激活環(huán)境

這篇具有很好參考價值的文章主要介紹了【Docker】dockerfile部署conda并激活環(huán)境。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

原文作者:我輩李想
版權(quán)聲明:文章原創(chuàng),轉(zhuǎn)載時請務(wù)必加上原文超鏈接、作者信息和本聲明。



前言

在使用docker的過程中,跟著官方文檔或各種教程都是很順利的,在實(shí)際項(xiàng)目中,我碰到了一個docker部署conda鏡像容器,實(shí)際程序是在虛擬環(huán)境slab中,不是base。項(xiàng)目是我從其他人手中接過來的,每次更新docker鏡像時,都是pull鏡像、run進(jìn)入容器,更新環(huán)境,commit、push倉庫。一直有個不一樣的想法在沖擊我,能不能直接用dockerfile創(chuàng)建鏡像,然后直接push倉庫?,F(xiàn)在就有了這篇博客。


一、新建dockerfile文件

創(chuàng)建Dockerfile_conda文件,我們已經(jīng)按照docker配置寫入相關(guān)命令,內(nèi)容如下:

FROM continuumio/miniconda3 AS base
WORKDIR /slab

ENV PATH /opt/conda/envs/slab/bin:$PATH
# 創(chuàng)建slab環(huán)境
RUN conda create --name slab python=3.9 
# 激活slab環(huán)境
RUN conda activate slab
# 安裝python庫
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple \
    uvicorn fastapi python-dotenv redis requests pymysql pandas \
    jsonpath sqlalchemy python-docx cx_Oracle schedule rabbitpy \
    pika python-multipart openpyxl superstream

主要關(guān)注RUN的三個命令,這是我們正常使用conda的命令。

二、使用build創(chuàng)建鏡像

docker build -t pika_conda -f Dockerfile_conda .

因?yàn)閐ockerfile配置問題,這個無法創(chuàng)建鏡像

1.報(bào)錯:Your shell has not been properly configured to use ‘conda activate’.

這個報(bào)錯我們仔細(xì)看時讓我們使用conda init **,如果是在linux系統(tǒng),可以這么干,但是在docker容器中,這個命令無效。
docker conda,CI/CD,docker,conda,容器
我參考了這篇博客,在dockerfile中加入一條命令,現(xiàn)在dockerfile內(nèi)容如下:

FROM continuumio/miniconda3 AS base
WORKDIR /slab

ENV PATH /opt/conda/envs/slab/bin:$PATH
# 創(chuàng)建slab環(huán)境
RUN conda create --name slab python=3.9 
# 激活slab環(huán)境
RUN source activate slab
# RUN conda activate slab
# 安裝python庫
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple \
    uvicorn fastapi python-dotenv redis requests pymysql pandas \
    jsonpath sqlalchemy python-docx cx_Oracle schedule rabbitpy \
    pika python-multipart openpyxl superstream

2.報(bào)錯:source - not found

現(xiàn)在還不能確定虛擬環(huán)境是否激活成功,因?yàn)槲覀兪莇ocker鏡像,無法直接使用source。我有找了一篇博客,現(xiàn)在dockerfile內(nèi)容如下:

FROM continuumio/miniconda3 AS base
WORKDIR /slab

ENV PATH /opt/conda/envs/slab/bin:$PATH
# 創(chuàng)建slab環(huán)境
RUN conda create --name slab python=3.9 
# 激活slab環(huán)境
RUN /bin/bash -c "source activate slab"
# RUN conda activate slab
# 安裝python庫
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple \
    uvicorn fastapi python-dotenv redis requests pymysql pandas \
    jsonpath sqlalchemy python-docx cx_Oracle schedule rabbitpy \
    pika python-multipart openpyxl superstream

現(xiàn)在的dockerfile已經(jīng)可以成功創(chuàng)建鏡像了。

三、使用run啟動并進(jìn)入容器

docker run -it --name myconda_test pika_conda:latest /bin/bash

這里有個問題,雖然我們進(jìn)入了容器,但是默認(rèn)激活的環(huán)境還是base
docker conda,CI/CD,docker,conda,容器我們還需要修改dockerfile文件,內(nèi)容如下:

FROM continuumio/miniconda3 AS base
WORKDIR /slab

ENV PATH /opt/conda/envs/slab/bin:$PATH
# 創(chuàng)建slab環(huán)境
RUN conda create --name slab python=3.9 
# 激活slab環(huán)境
RUN /bin/bash -c "source activate slab"
# RUN conda activate slab
# 激活默認(rèn)環(huán)境
RUN echo "conda activate slab" >> ~/.bashrc
# 安裝python庫
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple \
    uvicorn fastapi python-dotenv redis requests pymysql pandas \
    jsonpath sqlalchemy python-docx cx_Oracle schedule rabbitpy \
    pika python-multipart openpyxl superstream

docker conda,CI/CD,docker,conda,容器
網(wǎng)絡(luò)上有將conda activate slab放在CMD中,也可以實(shí)現(xiàn)上述的效果,但是這樣有一個風(fēng)險(xiǎn)。我們這個鏡像最終會被其他dockerfile文件from,新的dockerfile中也存在CMD,可能被覆蓋。

四、檢查虛擬環(huán)境是否激活,并安裝了包

在容器中,我們直接使用pip list 查看python的三方包,我們可以看到已經(jīng)成功安裝了。
docker conda,CI/CD,docker,conda,容器
最后我整理了一下dockerfile的內(nèi)容,下面的是最終版文件。

FROM continuumio/miniconda3 AS base
WORKDIR /slab

ENV PATH /opt/conda/envs/slab/bin:$PATH

RUN conda create --name slab python=3.9 \
    && /bin/bash -c "source activate slab" \
    && echo "conda activate slab" >> ~/.bashrc \
    && pip install -i https://pypi.tuna.tsinghua.edu.cn/simple \
    uvicorn fastapi python-dotenv redis requests pymysql pandas \
    jsonpath sqlalchemy python-docx cx_Oracle schedule rabbitpy \
    pika python-multipart openpyxl superstream

五、通過conda參數(shù)實(shí)現(xiàn)安裝python包

通過上文,我們是按照正常的conda使用路線完成了python包安裝至指定虛擬環(huán)境。因?yàn)閜ip默認(rèn)是直接安裝至base環(huán)境,我們可以通過需改conda設(shè)置,實(shí)現(xiàn)包安裝至slab,這是一個環(huán)境變量CONDA_DEFAULT_ENV。dockerfile的終版內(nèi)容如下:

FROM continuumio/miniconda3 AS base
WORKDIR /slab

ENV TZ=Asia/Shanghai
ENV PATH /opt/conda/envs/slab/bin:$PATH
ENV CONDA_DEFAULT_ENV slab

RUN conda create --name slab python=3.9 \
    && echo "conda activate slab" >> ~/.bashrc \
    && pip install -i https://pypi.tuna.tsinghua.edu.cn/simple \
    uvicorn fastapi python-dotenv redis requests pymysql pandas \
    jsonpath sqlalchemy python-docx cx_Oracle schedule rabbitpy \
    pika python-multipart openpyxl superstream xlsxwriter pytest

SHELL ["/bin/bash", "-c"]

六、dockerfile執(zhí)行多個命令

SHELL ["/bin/bash", "-c"]

ENTRYPOINT uvicorn main:app --host 0.0.0.0 --port 9099 --workers 4 --env-file config/dev.env & python mq_main.py

七、dockerfile 定義run變參

SHELL ["/bin/bash", "-c"]

ENTRYPOINT ["uvicorn","main:app","--host","0.0.0.0","--port","9099","--workers","4","--env-file"]
CMD ["config/dev.env"]

根據(jù)ENTRYPOINT 和CMD,可以讀取docker 命令的 --env-file參數(shù),實(shí)現(xiàn)變參的使用文章來源地址http://www.zghlxwxcb.cn/news/detail-843883.html

docker run -d -p 9099 -name dn --env-file config/prod.env xxx:latest

到了這里,關(guān)于【Docker】dockerfile部署conda并激活環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [Docker實(shí)現(xiàn)測試部署CI/CD----相關(guān)服務(wù)器的安裝配置(1)]

    [Docker實(shí)現(xiàn)測試部署CI/CD----相關(guān)服務(wù)器的安裝配置(1)]

    CI,Continuous Integration,持續(xù)集成。即將持續(xù)不斷更新的代碼經(jīng)構(gòu)建、測試后也持續(xù)不斷的集成到項(xiàng)目主干分支。 CD,包含兩層含義:Continuous Delivery,持續(xù)交付,和 Continuous Deployment,持續(xù) 部署。 持續(xù)交付:是持續(xù)集成的后續(xù)步驟,持續(xù)頻繁地將軟件的新版本交付到類生產(chǎn)環(huán)境

    2024年02月14日
    瀏覽(22)
  • [Docker實(shí)現(xiàn)測試部署CI/CD----Jenkins集成相關(guān)服務(wù)器(3)]

    [Docker實(shí)現(xiàn)測試部署CI/CD----Jenkins集成相關(guān)服務(wù)器(3)]

    ???????? SonarScanner 是一種代碼掃描工具,專門用來掃描和分析項(xiàng)目代碼質(zhì)量。掃描和分析完 成之后,會將結(jié)果寫入到 SonarQube 服務(wù)器的數(shù)據(jù)庫中,并在 SonarQube 平臺顯示這些數(shù) 據(jù)。 ????????在 SonarQube 官網(wǎng)的幫助文檔中可以下載 SonarScanner。這里下載一個 Linux 系統(tǒng)下使

    2024年02月14日
    瀏覽(27)
  • [Docker實(shí)現(xiàn)測試部署CI/CD----構(gòu)建成功后釘釘告警(7)]

    [Docker實(shí)現(xiàn)測試部署CI/CD----構(gòu)建成功后釘釘告警(7)]

    首先需要在釘釘中創(chuàng)建一個項(xiàng)目群。 復(fù)制Webhook,后面在 Jenkins 配置時需要使用。 ????????在Jennkins中下載 build user vars plugin ,獲取項(xiàng)目中的相關(guān)變量值 在 Jenkins 中下載 DingTalk 插件。 在 Jenkins 的系統(tǒng)管理中可找到“釘釘”,這是安裝過 DingTalk 后出現(xiàn)的。 修改Jenkinsfile文件

    2024年02月13日
    瀏覽(54)
  • [Docker實(shí)現(xiàn)測試部署CI/CD----相關(guān)服務(wù)器的安裝配置(2)]

    [Docker實(shí)現(xiàn)測試部署CI/CD----相關(guān)服務(wù)器的安裝配置(2)]

    ????????Jenkins 是一個開源軟件項(xiàng)目,是基于 Java 開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺,使軟件項(xiàng)目可以進(jìn)行持續(xù)集成。 下載Linux版本的jdk,解壓到/usr/local目錄 進(jìn)入 /etc/profile 目錄,設(shè)置環(huán)境變量 刷新配置文件,輸入

    2024年02月14日
    瀏覽(54)
  • CI/CD—Docker初入門學(xué)習(xí)

    CI/CD—Docker初入門學(xué)習(xí)

    Docker 是基于 Go 語言的開源應(yīng)用容器虛擬化技術(shù)。Docker的主要目標(biāo)是build、ship and run any app,anywhere,即通過對應(yīng)用組件的封裝、分發(fā)、部署、運(yùn)行等生命周期的管理,達(dá)到應(yīng)用組件級別的一次封裝、到處運(yùn)行(來源于官網(wǎng))。這里的應(yīng)用組件,即可以是一個Web應(yīng)用,也可以是

    2024年02月14日
    瀏覽(69)
  • docker 鏡像制作 與 CI/CD

    docker 鏡像制作 與 CI/CD

    目錄 鏡像到底是什么? 使用docker創(chuàng)建鏡像 步驟: 1、編輯Dockerfile(Dockerfile是docker制作鏡像的配方文件) 2、編輯requirements.txt文件 ?3、編輯app.py文件,我們的程序文件 4、生成鏡像文件 5、查看生成的鏡像 6、下載啟動redis鏡像 7、使用生成的鏡像生成容器? 8、????查看實(shí)

    2024年02月11日
    瀏覽(23)
  • CI/CD—Docker中深入學(xué)習(xí)

    CI/CD—Docker中深入學(xué)習(xí)

    什么是容器數(shù)據(jù)卷: 將應(yīng)用和環(huán)境打包成一個鏡像! 數(shù)據(jù)?如果數(shù)據(jù)都在容器中,那么我們?nèi)萜鲃h除,數(shù)據(jù)就會丟失!需求:數(shù)據(jù)可以持久 化。MySQL容器刪除了,刪容器跑路!需求:MySQL數(shù)據(jù)可以存儲在本地 容器之間可以有一個數(shù)據(jù)共享的技術(shù)!Docker 容器中產(chǎn)生的數(shù)據(jù),同

    2024年02月14日
    瀏覽(19)
  • 14. Docker中實(shí)現(xiàn)CI和CD

    14. Docker中實(shí)現(xiàn)CI和CD

    目錄 1、前言 2、什么是CI/CD 3、部署Jenkins 3.1、下載Jenkins 3.2、啟動Jenkins 3.3、訪問Jenkins頁面 4、Jenkins部署一個應(yīng)用 5、Jenkins實(shí)現(xiàn)Docker應(yīng)用的持續(xù)集成和部署 5.1、創(chuàng)建Dockerfile 5.2、集成Jenkins和Docker 6、小結(jié) 持續(xù)集成(CI/CD)是一種軟件開發(fā)的經(jīng)驗(yàn)總結(jié)。它用于幫助開發(fā)團(tuán)隊(duì)和交付

    2024年02月11日
    瀏覽(22)
  • linux docker部署深度學(xué)習(xí)環(huán)境(docker還是conda)

    在深度學(xué)習(xí)中,避免不了在遠(yuǎn)程服務(wù)器上進(jìn)行模型的訓(xùn)練,如果直接在服務(wù)器裸機(jī)的基礎(chǔ)環(huán)境跑顯然是不可取的,此時搭建用于模型訓(xùn)練的docker環(huán)境顯得尤為重要。 在深度學(xué)習(xí)中,避免不了在遠(yuǎn)程服務(wù)器上進(jìn)行模型的訓(xùn)練,如果直接在服務(wù)器裸機(jī)的基礎(chǔ)環(huán)境跑顯然是不可取的

    2024年02月21日
    瀏覽(19)
  • 【CI/CD】基于 Jenkins+Docker+Git 的簡單 CI 流程實(shí)踐(上)

    【CI/CD】基于 Jenkins+Docker+Git 的簡單 CI 流程實(shí)踐(上)

    在如今的互聯(lián)網(wǎng)時代,隨著軟件開發(fā)復(fù)雜度的不斷提高,軟件開發(fā)和發(fā)布管理也越來越重要。目前已經(jīng)形成一套標(biāo)準(zhǔn)的流程,最重要的組成部分就是 持續(xù)集成 及 持續(xù)交付、部署 。在此,我們在京東云上以一個案例簡單實(shí)踐下 CI 流程。 1.1 CI/CD 持續(xù)集成 (Continuous Integration,

    2024年02月13日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包