欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

之后就是看案例:

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

  • Vue項(xiàng)目,涉及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 ./
# 安裝項(xiàng)目依賴
RUN npm install
# 將宿主機(jī)的所有文件,放到指定的WORKDIR工作目錄里面來
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)聽的端口,一般為 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官方倉庫](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 .
# 啟動(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"]

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

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

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

# 前面我將dist包build出來了,但是第一印象卻是用COPY來操作的,這就不對(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è)鏡像階段,那就通過--from=xxx來操作了。
  • " . " 代表當(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寫一個(gè)Dockerfile文件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)docker寫Dockerfile內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker之容器文件的上傳和下載方式

    Docker之容器文件的上傳和下載方式

    這篇文章主要介紹了Docker之容器文件的上傳和下載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 利用Docker部署PostgreSQL 12.4主從方式

    利用Docker部署PostgreSQL 12.4主從方式

    這篇文章主要介紹了利用Docker部署PostgreSQL 12.4主從方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Centos 6.5中安裝docker的步驟(簡潔版)

    Centos 6.5中安裝docker的步驟(簡潔版)

    這篇文章主要介紹了Centos 6.5中安裝docker的步驟(簡潔版),需要的朋友可以參考下
    2016-10-10
  • 基于docker的caffe環(huán)境搭建方法

    基于docker的caffe環(huán)境搭建方法

    這篇文章主要介紹了基于docker的caffe環(huán)境搭建方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • Docker常見命令整理匯總(包括鏡像命令、容器命令)

    Docker常見命令整理匯總(包括鏡像命令、容器命令)

    這篇文章主要給大家介紹了關(guān)于Docker常見命令整理匯總的相關(guān)資料,包括鏡像命令、容器命令等等,通過一個(gè)個(gè)示例來加深各位看官對(duì)docker相關(guān)命令的理解以及記憶,需要的朋友可以參考下
    2022-07-07
  • Docker 基礎(chǔ)之Dockerfile命令詳解

    Docker 基礎(chǔ)之Dockerfile命令詳解

    這篇文章主要介紹了Docker 基礎(chǔ)之Dockerfile命令,本文介紹 Dockerfile 的基本結(jié)構(gòu)及其支持的眾多指令,有興趣的可以了解一下
    2017-04-04
  • Mac?M1?Docker如何運(yùn)行nacos2.0.3(若依微服務(wù)框架)

    Mac?M1?Docker如何運(yùn)行nacos2.0.3(若依微服務(wù)框架)

    這篇文章主要介紹了Mac?M1?Docker如何運(yùn)行nacos2.0.3(若依微服務(wù)框架),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • docker部署minio并使用springboot連接的操作方法

    docker部署minio并使用springboot連接的操作方法

    這篇文章主要介紹了docker部署minio并使用springboot連接的操作方法,本文以minio為例結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2023-11-11
  • Docker Swarm集群管理的使用及原理解析

    Docker Swarm集群管理的使用及原理解析

    這篇文章主要介紹了Docker Swarm集群管理的使用及原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • docker-compose?up?-d遇到的問題及解決

    docker-compose?up?-d遇到的問題及解決

    這篇文章主要介紹了docker-compose?up?-d遇到的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論