Docker 系列:打包新鏡像到阿里雲鏡像倉庫

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%以後就已經成功將鏡像發送至阿里雲鏡像倉庫

關注

若是有問題,請在下方評論

想得到更多的學習知識請關注微信公衆號:西北碼農或掃下方二維碼


相關文章
相關標籤/搜索