最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker部署應(yīng)用的三種方式

 更新時(shí)間:2024年03月07日 09:26:34   作者:_小許_  
越來(lái)越多的前端團(tuán)隊(duì)選擇用Docker部署前端項(xiàng)目,本文主要介紹了docker部署應(yīng)用的三種方式,具有一定的參考價(jià)值,感興趣的可以了解一下

docker命令部署

拉取ubuntu的基礎(chǔ)鏡像

docker pull ubuntu

注意基礎(chǔ)鏡像是壓縮版的,只保證能夠運(yùn)行項(xiàng)目的最基礎(chǔ)條件,很多命令都是沒(méi)有的,在使用過(guò)程中如果需要那些命令需要提前安裝。

安裝openjdk

sudo apt install openjdk-11-jdk

在這里插入圖片描述

安裝mysql

sudo apt-get install mysql-server 

在這里插入圖片描述

若安裝失敗更新一下源sudo apt-get update

上傳源代碼,構(gòu)建容器掛載數(shù)據(jù)卷。

源代碼就不粘貼了,就是查詢?nèi)缦聰?shù)據(jù)庫(kù)內(nèi)容:

在這里插入圖片描述

啟動(dòng)容器掛載數(shù)據(jù)卷到源代碼目錄:

docker run -it -p 8080:8080 -v /home/xwh/java:/usr/local/java --name javaweb ubuntu

進(jìn)入容器,切換到源代碼目錄:

java -jar demo-0.0.1-SNAPSHOT.jar

在這里插入圖片描述

dockerfile部署

在上一節(jié)中使用docker部署應(yīng)用,每一層鏡像都需要配置,這些可以通過(guò)Dockerfile構(gòu)建,docker可以構(gòu)建一個(gè)虛擬機(jī),在虛擬機(jī)的基礎(chǔ)上依次配置程序需要的環(huán)境,再將源代碼上傳到虛擬機(jī)上。

FROM ubuntu:20.04
MAINTAINER gancy "xiaoxu@163.com"
#刷新包緩存,安裝wget工具
RUN apt-get update

#安裝并配置java環(huán)境

ADD jdk-8u101-linux-x64.tar.gz /usr/local/java

#配置環(huán)境變量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_101
ENV PATH $JAVA_HOME/bin;$PATH
ENV CLASSPATH .:$JAVA_HOME/lib

#配置運(yùn)行環(huán)境
ENV LANG C.UTF-8

#配置Tomcat
ADD apache-tomcat-8.5.11.tar.gz /usr/local/tomcat/
RUN chmod +x /usr/local/tomcat/apache-tomcat-8.5.11/bin/*.sh
EXPOSE 8080
ENTRYPOINT /usr/local/tomcat/apache-tomcat-8.5.11/bin/startup.sh && /bin/bash

# Install MySQL.
RUN \
  apt-get update && \
  DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server && \
  rm -rf /var/lib/apt/lists/* && \
  sed -i 's/^\(bind-address\s.*\)/# \1/' /etc/mysql/my.cnf && \
  sed -i 's/^\(log_error\s.*\)/# \1/' /etc/mysql/my.cnf && \
  echo "mysqld_safe &" > /tmp/config && \
  echo "mysqladmin --silent --wait=30 ping || exit 1" >> /tmp/config && \
  echo "mysql -e 'GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"%\" WITH GRANT OPTION;'" >> /tmp/config && \
  bash /tmp/config && \
  rm -f /tmp/config

# Define mountable directories.
VOLUME ["/etc/mysql", "/var/lib/mysql"]

# Define working directory.
WORKDIR /data

# Define default command.
CMD ["mysqld_safe"]

# Expose ports.
EXPOSE 3306

直接安裝jdk和mysql,使用VOLUME設(shè)置數(shù)據(jù)卷

VOLUME["/home/java","/usr/local/java"]

最后通過(guò)鏡像構(gòu)建容器,進(jìn)入容器對(duì)應(yīng)目錄下啟動(dòng)服務(wù)。當(dāng)然也可以通過(guò)ENTREYPOINT啟動(dòng)服務(wù)。

shell腳本使用Dockerfile一鍵化部署

通過(guò)上一步的Dockerfile部署已經(jīng)感受到了Dockerfile的強(qiáng)大,在上一節(jié)構(gòu)建完程序需要的環(huán)境后,需要進(jìn)行上傳源代碼,打包,啟動(dòng)程序的步驟。然而這些程序都是可以通過(guò)Dockerfile一鍵化完成的。

Dockerfile一鍵化部署的滿足條件是:

  • 下載基礎(chǔ)鏡像和程序所需環(huán)境鏡像
  • 配置參數(shù)、端口即數(shù)據(jù)卷等變量
  • 上傳程序并下載程序所需要的庫(kù)
  • 啟動(dòng)程序
# 下載python3.7鏡像
FROM python

# 創(chuàng)建工作目錄

WORKDIR /usr/local/python

# 引入外部參數(shù)
ARG gitaddr
ARG path

# 暴露端口
EXPOSE 5000

# git克隆倉(cāng)庫(kù)
RUN git clone ${gitaddr} share

# 安裝pip
RUN apt update
RUN apt install -y python3-pip

# 通過(guò)requirements安裝環(huán)境
RUN pip install -r ./share/requirements.txt


# 執(zhí)行命令
ENTRYPOINT ["cd","share"]
ENTRYPOINT ["ls"]
ENTRYPOINT ["python3","share/app.py"]

在上面的Dockerfile中,構(gòu)建了python所需要的環(huán)境;設(shè)置了工作目錄,參數(shù)端口等信息;通過(guò)克隆獲取源代碼,當(dāng)然也可以COPY上傳,并進(jìn)入代碼目錄;最后啟動(dòng)程序。

Dockerfile中運(yùn)行一個(gè)程序的基本要素都有了,那么根據(jù)該Dockerfile打包鏡像,如下

docker build --build-arg gitaddr="https://gitee.com/fireapproval/share.git" --build-arg path="share" -t flask-test:1.0 .

通過(guò)--build-arg傳遞參數(shù)git倉(cāng)庫(kù)地址,-t設(shè)置鏡像名稱和標(biāo)簽,.設(shè)置Docker所在目錄。

在這里插入圖片描述

flask-test即為剛剛構(gòu)建的鏡像。以該鏡像構(gòu)建容器:

 docker run -it -p 5000:5000 --name falsk-app flask-test:18

在這里插入圖片描述

在這里插入圖片描述

需要注意的是監(jiān)聽(tīng)的host一定要是0.0.0.0,不然會(huì)出現(xiàn)只能在容器內(nèi)部訪問(wèn),在主機(jī)上訪問(wèn)不了的情況。

在這里插入圖片描述

5000端口已經(jīng)被占用了。瀏覽器也成功訪問(wèn)

在這里插入圖片描述

到這里還沒(méi)實(shí)現(xiàn)一鍵化部署,因?yàn)檫€需要人工調(diào)用兩個(gè)命令:

# 構(gòu)建鏡像的命令
docker build --build-arg gitaddr="https://gitee.com/fireapproval/share.git" --build-arg path="share" -t flask-test:1.0 .
# 運(yùn)行容器的命令
docker run -it -p 5000:5000 --name falsk-app flask-test:18

這兩個(gè)命令也是可以通過(guò)shell腳本實(shí)現(xiàn)的,如下所示

#通過(guò)Dockerfile構(gòu)建鏡像在同一目錄下
# 參數(shù) git地址 
`docker build --build-arg gitaddr=$1 -t tmp-img:1.0 .`;

#通過(guò)鏡像啟動(dòng)容器
# 參數(shù)容器名稱 
`docker run -it -p 5000:5000 --name $2 tmp-img:1.0`;

$1用于傳遞git地址,需是公開(kāi)的,$2是啟動(dòng)容器名稱。那么運(yùn)行腳本的命令就是:

bash ./build.sh https://gitee.com/fireapproval/share.git flask-test2

在這里插入圖片描述

目錄文件如下所示:

在這里插入圖片描述

那么啟動(dòng)腳本就會(huì)自動(dòng)調(diào)用上述兩條命令,分別構(gòu)建一個(gè)鏡像,并根據(jù)鏡像構(gòu)建容器,并啟動(dòng)容器。

在這里插入圖片描述

容器被我名稱成了tmp-img當(dāng)然也可以修改為其他任意名稱。那么在任意代碼中只要調(diào)用該shell腳本就能啟動(dòng)git倉(cāng)庫(kù)下的代碼了。

到此這篇關(guān)于docker部署應(yīng)用的三種方式的文章就介紹到這了,更多相關(guān)docker部署應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker 部署 RocketMQ 5.1.0 踩坑指南從超時(shí)到 Console 連不上的完整解決方案

    Docker 部署 RocketMQ 5.1.0 踩坑指南從超時(shí)到 C

    最近在項(xiàng)目中引入RocketMQ作為消息中間件,選擇使用Docker容器化部署以簡(jiǎn)化環(huán)境搭建,本文給大家介紹Docker 部署 RocketMQ 5.1.0 踩坑指南從超時(shí)到 Console 連不上的完整解決方案,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Docker部署Laravel應(yīng)用實(shí)現(xiàn)隊(duì)列&任務(wù)調(diào)度

    Docker部署Laravel應(yīng)用實(shí)現(xiàn)隊(duì)列&任務(wù)調(diào)度

    這篇文章主要介紹了Docker部署Laravel應(yīng)用實(shí)現(xiàn)隊(duì)列&任務(wù)調(diào)度,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 關(guān)于dockerfile build過(guò)程中報(bào)/bin/sh: pip: command not found的解決方法

    關(guān)于dockerfile build過(guò)程中報(bào)/bin/sh: pip: command not found的解決方法

    這篇文章主要介紹了關(guān)于dockerfile build過(guò)程中報(bào)/bin/sh: pip: command not found的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • docker搭建nacos1.3.0的實(shí)現(xiàn)

    docker搭建nacos1.3.0的實(shí)現(xiàn)

    這篇文章主要介紹了docker搭建nacos1.3.0的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • docker映射端口穿透內(nèi)置防火墻的實(shí)現(xiàn)

    docker映射端口穿透內(nèi)置防火墻的實(shí)現(xiàn)

    在使用Docker部署項(xiàng)目時(shí),即使未開(kāi)啟CentOS7的Firewalld防火墻,端口仍可被外網(wǎng)訪問(wèn),這是因?yàn)镈ocker在安裝后會(huì)接管iptables,并自動(dòng)添加規(guī)則以放行指定端口,解決方法包括依賴外置防火墻放行端口、指定端口監(jiān)聽(tīng)地址為本機(jī)、禁用Docker的iptables規(guī)則修改
    2024-10-10
  • Docker中設(shè)置靜態(tài)IP地址方式

    Docker中設(shè)置靜態(tài)IP地址方式

    本文介紹了Docker容器設(shè)置靜態(tài)IP的四種方法,包括自定義bridge網(wǎng)絡(luò)(推薦)、macvlan網(wǎng)絡(luò)(物理IP接入)、docker-compose配置及修改現(xiàn)有容器,涵蓋IP沖突解決、云環(huán)境適配等注意事項(xiàng),并對(duì)比靜態(tài)與動(dòng)態(tài)IP的優(yōu)缺點(diǎn),提供最佳實(shí)踐建議
    2025-07-07
  • 使用Docker部署Angular項(xiàng)目的方法步驟

    使用Docker部署Angular項(xiàng)目的方法步驟

    這篇文章主要介紹了使用Docker部署Angular項(xiàng)目的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • docker環(huán)境變量配置不生效/ect/profile的解決方法

    docker環(huán)境變量配置不生效/ect/profile的解決方法

    docker在使用過(guò)程中,有時(shí)候自定義容器實(shí)例中的某些配置文件,本文主要介紹了docker環(huán)境變量配置不生效/ect/profile的解決方法,感興趣的可以了解一下
    2023-08-08
  • win7環(huán)境下Docker快速構(gòu)建及阿里云容器加速配置詳解

    win7環(huán)境下Docker快速構(gòu)建及阿里云容器加速配置詳解

    這篇文章主要介紹了win7環(huán)境下Docker快速構(gòu)建及阿里云容器加速配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • docker配置普通用戶訪問(wèn)的三種方法

    docker配置普通用戶訪問(wèn)的三種方法

    本文主要介紹了docker配置普通用戶訪問(wèn)的三種方法,讓普通用戶在Ubuntu系統(tǒng)上無(wú)需使用sudo權(quán)限即可使用Docker,每種方法都詳細(xì)說(shuō)明了具體步驟,并附帶了相關(guān)命令,感興趣的可以了解一下
    2024-11-11

最新評(píng)論

衡阳市| 馆陶县| 昌都县| 搜索| 什邡市| 蓝山县| 蓬溪县| 普兰店市| 怀来县| 贵定县| 锦屏县| 长沙市| 仙居县| 安达市| 遵义市| 腾冲县| 中宁县| 慈溪市| 呼玛县| 清徐县| 荣成市| 漯河市| 泗阳县| 关岭| 淄博市| 阿拉善盟| 中超| 丽江市| 岳西县| 千阳县| 喀喇| 宜黄县| 黎城县| 高台县| 靖西县| 西峡县| 资源县| 临颍县| 饶平县| 昔阳县| 岫岩|