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

docker寫一個Dockerfile文件的實現(xiàn)

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

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

建議先熟悉一下Dockerfile的一些語法。

之后就是看案例:

前端項目(Nginx) DockerFile文件

  • Vue項目,涉及node安裝依賴、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 ./
# 安裝項目依賴
RUN npm install
# 將宿主機的所有文件,放到指定的WORKDIR工作目錄里面來
COPY . .
# 執(zhí)行 npm run build:prod 命令
RUN npm run build:prod

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

后端項目 DockerFile文件

  • SpringBoot項目,涉及mvn命令執(zhí)行,啟動jar包等。
# 選擇構(gòu)建用基礎(chǔ)鏡像。如需更換,請到[dockerhub官方倉庫](https://hub.docker.com/_/java?tab=tags)自行選擇后替換。
FROM maven:3.6.0-jdk-8-slim AS build
# 指定構(gòu)建過程中的工作目錄
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, 選用國內(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 .
# 啟動認(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
# 啟動redis服務(wù)
ENTRYPOINT ["redis-server","/home/holmes/redis/redis.conf"]

下面就是說幾個碰到的棘手的命令

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

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

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

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

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

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

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

相關(guān)文章

  • docker從Path值看容器啟動命令方式

    docker從Path值看容器啟動命令方式

    Docker容器的config.v2.json文件中的Path字段指定了容器啟動時要執(zhí)行的主程序(可執(zhí)行文件)的路徑,決定了容器運行時的入口點,它通常是容器文件系統(tǒng)中某個可執(zhí)行文件的絕對路徑
    2026-02-02
  • docker生命周期管理和鏡像管理命令詳解

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

    Docker通過容器技術(shù)提供了一種輕量級、快速部署和可移植的應(yīng)用程序運行環(huán)境,極大地簡化了應(yīng)用程序的部署和管理過程,提高了開發(fā)和運維的效率,這篇文章主要介紹了docker生命周期管理和鏡像管理命令,需要的朋友可以參考下
    2023-08-08
  • Docker調(diào)度器Kubernetes使用過程

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

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

    詳解給Ocelot做一個Docker鏡像

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

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

    本文介紹了在服務(wù)器上使用Docker部署Node.js項目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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鏡像的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Docker部署青龍面板的實現(xiàn)步驟

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

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

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

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

    Docker 存儲管理的三種方式之卷、綁定掛載、臨時存儲

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

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

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

最新評論

敦煌市| 新巴尔虎右旗| 阿拉善左旗| 广昌县| 镇宁| 玉林市| 龙南县| 嘉荫县| 稷山县| 旬邑县| 扎囊县| 永川市| 泗水县| 濮阳县| 新源县| 喜德县| 灵璧县| 万年县| 保定市| 如东县| 拉孜县| 申扎县| 融水| 合肥市| 汾阳市| 万宁市| 朝阳市| 崇义县| 交城县| 彝良县| 色达县| 唐海县| 巴彦淖尔市| 文水县| 济源市| 乐清市| 五台县| 沂水县| 潼南县| 循化| 红原县|