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

docker寫(xiě)一個(gè)Dockerfile文件的實(shí)現(xiàn)

 更新時(shí)間:2024年01月26日 08:26:01   作者:xupengboo  
Dockerfile 是一個(gè)用來(lái)構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說(shuō)明,本文主要介紹了docker寫(xiě)一個(gè)Dockerfile文件的實(shí)現(xiàn)

現(xiàn)在的項(xiàng)目肯定都離不開(kāi)docker,只要是流水線部署就會(huì)涉及Dockerfile文件,那么如何寫(xiě)一個(gè)正確的編寫(xiě)一個(gè)Dockerfile文件呢?

建議先熟悉一下Dockerfile的一些語(yǔ)法。

之后就是看案例:

前端項(xiàng)目(Nginx) DockerFile文件

  • Vue項(xiàng)目,涉及node安裝依賴(lài)、build打包等操作。
# 使用 Node.js 鏡像 , as build 別名構(gòu)建階段
FROM node:14 AS build
# 指定構(gòu)建目錄
WORKDIR /holmes-center-front
# 復(fù)制 package.json 和 package-lock.json
COPY package*.json ./
# 安裝項(xiàng)目依賴(lài)
RUN npm install
# 將宿主機(jī)的所有文件,放到指定的WORKDIR工作目錄里面來(lái)
COPY . .
# 執(zhí)行 npm run build:prod 命令
RUN npm run build:prod

# 使用官方的 Nginx 鏡像
FROM nginx:latest
# 將宿主機(jī)的 nginx.conf 文件復(fù)制到容器中的 /etc/nginx/ 目錄
COPY docker/nginx/nginx.conf /etc/nginx/nginx.conf
# 從第一build階段獲取dist下的文件移動(dòng)到容器中的 /usr/share/nginx/html/ 目錄
COPY --from=build /holmes-center-front/dist /usr/share/nginx/html/
# 暴露 Nginx 監(jiān)聽(tīng)的端口,一般為 80,但這里因?yàn)槭莌ttps協(xié)議所以要暴露443端口!
EXPOSE 443
# 啟動(dòng) Nginx 服務(wù)
CMD ["nginx", "-g", "daemon off;"]

后端項(xiàng)目 DockerFile文件

  • SpringBoot項(xiàng)目,涉及mvn命令執(zhí)行,啟動(dòng)jar包等。
# 選擇構(gòu)建用基礎(chǔ)鏡像。如需更換,請(qǐng)到[dockerhub官方倉(cāng)庫(kù)](https://hub.docker.com/_/java?tab=tags)自行選擇后替換。
FROM maven:3.6.0-jdk-8-slim AS build
# 指定構(gòu)建過(guò)程中的工作目錄
WORKDIR /holmes-center-server
# 將src目錄下所有文件,拷貝到工作目錄中src目錄下(.gitignore/.dockerignore中文件除外)
COPY holmes-admin /holmes-center-server/holmes-admin
COPY holmes-common /holmes-center-server/holmes-common
COPY holmes-framework /holmes-center-server/holmes-framework
COPY holmes-generator /holmes-center-server/holmes-generator
COPY holmes-quartz /holmes-center-server/holmes-quartz
COPY holmes-system /holmes-center-server/holmes-system
# 將pom.xml文件和settings.xml文件,拷貝到工作目錄下
COPY settings.xml pom.xml /holmes-center-server/
# 自定義settings.xml, 選用國(guó)內(nèi)鏡像源以提高下載速度
RUN mvn -s /holmes-center-server/settings.xml -f /holmes-center-server/pom.xml clean package

# 基礎(chǔ)鏡像
FROM  openjdk:8-jre
# author
MAINTAINER holmes
# 指定路徑
WORKDIR /holmes-center-server
# 復(fù)制jar文件到路徑
COPY --from=build /holmes-center-server/holmes-admin/target/*.jar .
# 啟動(dòng)認(rèn)證服務(wù)
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","holmes-admin.jar"]

Redis DockerFile文件

# 基礎(chǔ)鏡像
FROM redis:5.0.10
MAINTAINER holmes

# 掛載目錄
VOLUME /home/holmes/redis
# 創(chuàng)建目錄
RUN mkdir -p /home/holmes/redis
# 指定路徑
WORKDIR /home/holmes/redis
# 復(fù)制conf文件到路徑
COPY /docker/redis/redis.conf /home/holmes/redis/redis.conf
# 啟動(dòng)redis服務(wù)
ENTRYPOINT ["redis-server","/home/holmes/redis/redis.conf"]

下面就是說(shuō)幾個(gè)碰到的棘手的命令

COPY 指令 作用:很簡(jiǎn)單就是復(fù)制宿主機(jī)的文件到容器中

  • 如果添加了–from=xxx,那就不一樣了,例如:
# 這個(gè)指的是復(fù)制宿主機(jī)中的/holmes/dist到/usr/share/nginx/html/中。
COPY /holmes/dist /usr/share/nginx/html/

# 加上了--from=build,就是復(fù)制來(lái)自build階段的/holmes-center-front/dist內(nèi)容到/usr/share/nginx/html/下面,就不是宿主機(jī)了。
# 一般常用于多個(gè)階段鏡像構(gòu)建當(dāng)中,就和上面案例一樣
COPY --from=build /holmes-center-front/dist /usr/share/nginx/html/
  • 如果沒(méi)添加–from=xxx,第一個(gè)參數(shù)就是指定宿主機(jī)相關(guān)文件,第二個(gè)參數(shù)是指定容器相關(guān)文件的,不要混淆。為什么強(qiáng)調(diào)這個(gè)事情,因?yàn)?,每次?xiě)dockerfile文件時(shí),寫(xiě)著寫(xiě)著就混淆了,舉個(gè)例子:
...
# 復(fù)制 package.json 和 package-lock.json
COPY package*.json ./
# 安裝項(xiàng)目依賴(lài)
RUN npm install
# 將宿主機(jī)的所有文件,放到指定的WORKDIR工作目錄里面來(lái)
COPY . .
# 執(zhí)行 npm run build:prod 命令,這樣容器中就有了dist壓縮目錄
RUN npm run build:prod

# 前面我將dist包build出來(lái)了,但是第一印象卻是用COPY來(lái)操作的,這就不對(duì)了。。。
# 錯(cuò)誤案例:COPY dist /usr/share/nginx/html/ 這樣他就去宿主機(jī)找dist文件,一般不會(huì)存在!

# 正確應(yīng)該是下面的執(zhí)行mv,是容器內(nèi)部執(zhí)行命令才對(duì)。
RUN mv dist/* /usr/share/nginx/html/
# 如果涉及多個(gè)鏡像階段,那就通過(guò)--from=xxx來(lái)操作了。
  • " . " 代表當(dāng)前目錄下所有文件,例如:
# 指定構(gòu)建目錄
WORKDIR /holmes
# 將當(dāng)前目錄下所有文件,轉(zhuǎn)移holmes目錄
COPY . /holmes

RUN 指令:就是執(zhí)行命令。靈活運(yùn)用即可,有時(shí)候也可以執(zhí)行 ls、pwd命令,排除一些錯(cuò)誤等等。

到此這篇關(guān)于docker寫(xiě)一個(gè)Dockerfile文件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)docker寫(xiě)Dockerfile內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker從Path值看容器啟動(dòng)命令方式

    docker從Path值看容器啟動(dòng)命令方式

    Docker容器的config.v2.json文件中的Path字段指定了容器啟動(dòng)時(shí)要執(zhí)行的主程序(可執(zhí)行文件)的路徑,決定了容器運(yùn)行時(shí)的入口點(diǎn),它通常是容器文件系統(tǒng)中某個(gè)可執(zhí)行文件的絕對(duì)路徑
    2026-02-02
  • 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
  • Docker調(diào)度器Kubernetes使用過(guò)程

    Docker調(diào)度器Kubernetes使用過(guò)程

    Docker和Kubernetes在使用方式上有相似性,初次接觸這兩個(gè)技術(shù)的同學(xué)常常會(huì)搞混,但實(shí)際上它們并不是解決同一個(gè)問(wèn)題的技術(shù),也沒(méi)有辦法用其中一個(gè)替代另一個(gè)。通俗一點(diǎn)來(lái)說(shuō),Docker解決的是容器技術(shù)直接相關(guān)的問(wèn)題,而Kubernetes更多地關(guān)注在集群上調(diào)度和部署容器應(yīng)用
    2022-12-12
  • 詳解給Ocelot做一個(gè)Docker鏡像

    詳解給Ocelot做一個(gè)Docker鏡像

    這篇文章主要介紹了詳解給Ocelot做一個(gè)Docker鏡像,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Docker部署Node.js的實(shí)現(xiàn)示例

    Docker部署Node.js的實(shí)現(xiàn)示例

    本文介紹了在服務(wù)器上使用Docker部署Node.js項(xiàng)目,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Docker從零構(gòu)建php-nginx-alpine鏡像的方法

    Docker從零構(gòu)建php-nginx-alpine鏡像的方法

    這篇文章主要介紹了Docker從零構(gòu)建php-nginx-alpine鏡像的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Docker部署青龍面板的實(shí)現(xiàn)步驟

    Docker部署青龍面板的實(shí)現(xiàn)步驟

    青龍面本是一個(gè)定時(shí)腳本平臺(tái),通過(guò)它我們可以在設(shè)備上使用各種腳本跑定時(shí)任務(wù)達(dá)到解放雙手的目的,下面就來(lái)詳細(xì)的介紹 一下,感興趣的可以了解下
    2026-06-06
  • Docker?Desktop磁盤(pán)鏡像位置用途超詳細(xì)解析

    Docker?Desktop磁盤(pán)鏡像位置用途超詳細(xì)解析

    這篇文章主要介紹了Docker?Desktop磁盤(pán)鏡像位置用途的相關(guān)資料,Docker?Desktop中docker_data.vhdx虛擬磁盤(pán)的作用,用于存儲(chǔ)容器、鏡像、卷等數(shù)據(jù),文中介紹的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • Docker 存儲(chǔ)管理的三種方式之卷、綁定掛載、臨時(shí)存儲(chǔ)

    Docker 存儲(chǔ)管理的三種方式之卷、綁定掛載、臨時(shí)存儲(chǔ)

    本文介紹了Docker的三種存儲(chǔ)方式:卷(Volumes)、綁定掛載(BindMounts)和臨時(shí)存儲(chǔ)(Tmpfs),并詳細(xì)講解了每種方式的特點(diǎn)、使用方法和適用場(chǎng)景,感興趣的朋友一起看看吧
    2025-02-02
  • docker部署gitlab以及修改初始密碼方式

    docker部署gitlab以及修改初始密碼方式

    這篇文章主要介紹了docker部署gitlab以及修改初始密碼方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評(píng)論

老河口市| 闸北区| 汶川县| 永宁县| 泉州市| 呼和浩特市| 芒康县| 郸城县| 兴国县| 重庆市| 佳木斯市| 娄底市| 宁波市| 鄯善县| 西峡县| 大冶市| 滦平县| 晋州市| 剑川县| 泰安市| 吉水县| 苍梧县| 华亭县| 乌审旗| 高台县| 山西省| 樟树市| 望都县| 勃利县| 泸州市| 梧州市| 武宁县| 辽中县| 香河县| 时尚| 云南省| 平安县| 灵丘县| 闸北区| 噶尔县| 荥阳市|