1、.Jib -- Java 應用構建容器鏡像php
1.Jib介紹html
Jib 是 Google 開發的能夠直接構建 Java 應用的 Docker 和 OCI 鏡像的類庫,以 Maven 和 Gradle 插件形式提供。前端
經過 Jib,Java 開發者能夠使用他們熟悉的 Java 工具來構建容器。Jib 是一個快速而簡單的容器鏡像構建工具,它負責處理將應用程序打包到容器鏡像中所需的全部步驟。它不須要你編寫 Dockerfile 或安裝 Docker,並且能夠直接集成到 Maven 和 Gradle中 —— 只須要將插件添加到構建中,就能夠當即將 Java 應用程序容器化java
2.以springboot項目爲例 ,在gradle中使用Jiblinux
修改build.gradle文件nginx
#加入jibapply plugin: "com.google.cloud.tools.jib" plugins { id 'com.google.cloud.tools.jib' version '1.1.2'} group = 'com.example.zoe'version = '0.0.4' ext { set('registryUrl',"registry.cn-hangzhou.aliyuncs.com") set('registryNamespace', "倉庫名稱") set('registryUsername',"用戶名") set('registryPassword',"密碼")} jib { from { image = "java:8" } to { image = "${registryUrl}/${registryNamespace}/${project.getName()}" tags = ["latest","${project.version}".toString() ] auth { username = "${registryUsername}" password = "${registryPassword}" } } container { /** * 設置jvm的啓動參數 * user.timezone - 解決Java程序的時區問題 */ jvmFlags = ['-Duser.timezone=Asia/Shanghai'] }}
3.修改版本version,雙擊Jib就能夠打包上傳至鏡像倉庫 或者gradle jibredis
等待運行100%完成spring
阿里雲倉庫中能夠看到剛剛提交的版本0.0.4docker
2、Dockerfile--建立一個nginx鏡像傳至阿里雲倉庫shell
1.簡介:
Dockerfile 是一個用來構建鏡像的文本文件,文本內容包含了一條條構建鏡像所需的指令和說明
2.環境 :linux環境, docker 建立一個nginx鏡像
3.步驟
步驟1:在一個空目錄下,新建一個名爲 Dockerfile 文件,並在文件內添加如下內容:
FROM nginxRUN echo '這是nginx鏡像' > /usr/share/nginx/html/index.html
(構建好的鏡像內會有一個 /usr/share/nginx/html/index.html 文件)
Dockerfile中FROM 和 RUN 指令的做用
FROM:定製的鏡像都是基於 FROM 的鏡像,這裏的 nginx 就是定製須要的基礎鏡像。後續的操做都是基於 nginx。
RUN:用於執行後面跟着的命令行命令。有如下倆種格式:
shell 格式:
RUN <命令行命令># <命令行命令> 等同於,在終端操做的 shell 命令。
exec 格式:
RUN ["可執行文件", "參數1", "參數2"]# 例如:# RUN ["./test.php", "dev", "offline"] 等價於 RUN ./test.php dev offline
注意:Dockerfile 的指令每執行一次都會在 docker 上新建一層。因此過多無心義的層,會形成鏡像膨脹過大
FROM centosRUN yum install wgetRUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"RUN tar -xvf redis.tar.gz以上執行會建立 3 層鏡像。可簡化爲如下格式:FROM centosRUN yum install wget \ && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \ && tar -xvf redis.tar.gz
如上,以 && 符號鏈接命令,這樣執行後,只會建立 1 層鏡像
步驟2:開始構建鏡像
在 Dockerfile 文件的存放目錄下,執行構建動做。
如下示例,經過目錄下的 Dockerfile 構建一個 nginx:test(鏡像名稱:鏡像標籤). 注:最後的 . 表明本次執行的上下文路徑
docker build -t nginx:test .
構建成功
步驟三:查看鏡像
步驟四:docker 運行上述鏡像
更多詳細請參考docker 官方網站,或者菜鳥教程
最近才意識到:學習新東西最快的途徑是官方資源 ,全面且系統 知道的晚了些 ,錯過了好多學習的機會
3、Dockerfile--打包前端項目至阿里雲倉庫
環境:windows環境,Vue項目
1.Dockerfile 文件來定製一個鏡像
文件:Dockerfile,放置在前端項目的根目錄下,內容以下:
FROM docker.io/library/nginx:latest #基於nginx的鏡像LABEL MAINTAINER="zoe" #能夠不須要LABEL NAME="XX系統" # 覆蓋default配置COPY nginx.conf /etc/nginx/conf.d/default.conf # 複製配置文件COPY dist/ /usr/share/nginx/html #複製項目文件到nginx的html目錄下 EXPOSE 80 #暴露80端口
此操做的目的是:封裝了一個新的nginx鏡像,並將當前的前端項目build成功以後複製到nginx對應得目錄下,而且暴露80端口
(請隻字不差的閱讀,有時候離成功就差一點點,多一點耐心,你們都是這樣經歷過來的,你並不孤單)
2.文件nginx.conf,位置在前端項目的根目錄下
server { listen 80; server_name localhost; root /usr/share/nginx/html; location / { add_header Cache-Control no-store; try_files $uri $uri/ /index.html; }}
3.build.sh 文件 用來快速打包成鏡像,運行的時候必須有docker環境 ,windows須要安裝Docker Desktop
#!/usr/bin/env sh #======================# 打包構建自動化部署代碼#====================== version=$1echo "構建版本爲:" $version #yarn install#yarn build#npm installnpm run build#docker build -t 鏡像倉庫地址:版本號 . 以下,注最後的.不能丟 版本號要每次更新docker build -t registry.cn-hangzhou.aliyuncs.com/zoe/zoe:版本號 .docker push registry.cn-hangzhou.aliyuncs.com/zoe/zoe:1.0.8
4.上述三個文件的位置:
Dockefile,nginx.conf,build.sh 如上圖都在項目的根目錄下 修改build.sh裏面的版本號以後 ,在docker desktop啓動時運行build.sh
正常是提示打包百分比 100%以後就已經成功將鏡像發送至阿里雲鏡像倉庫
關注
若是有問題,請在下方評論
想得到更多的學習知識請關注微信公衆號:西北碼農或掃下方二維碼