上传 Docker 类型制品

功能介绍

在 CODING 持续集成任务构建过程当中,您可以选择将构建物上传至 CODING 制品库。

在使用该功能之前,请确保您对 Docker 类型制品库有初步了解,您可以点击阅读 在 CODING 中使用 Docker 制品库了解更多。

Jenkinsfile 配置

node {
    checkout([
        $class: 'GitSCM',
        branches: [[name: env.GIT_BUILD_REF]],
        userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
    ])

    // 构建 Docker 镜像
    imageName = "myteam-docker.pkg.coding.net/my-project/my-repo/my-app:latest"
    docker.build(imageName)

    // 推送 Docker 镜像到仓库
    docker.withRegistry("https://myteam-docker.pkg.coding.net", CODING_ARTIFACTS_CREDENTIALS_ID) {
        docker.image(imageName).push()
    }
}

Docker 构建网络加速

由于内地访问国际网络速度慢而且不稳定,导致 Docker 构建缓慢甚至超时失败,所以开发者编写 Dockerfile 时要注意:不要直接下载国外资源,应使用国内镜像或放在自己的云存储里。而且要按照各语言的要求,把 composer.lock 等 lock 文件提交到代码库,安装时才能使用里面的加速下载链接。

常见资源的国内镜像如下(视频讲解:《DevOps 实战:Jenkins Docker》):

Docker 下载和构建加速

apt

find /etc/apt/ -name "*.list" -print0 | xargs -0 sed -i 's/[a-z]\+.debian.org/mirrors.cloud.tencent.com/g'

get composer

curl -sS http://getcomposer.org.mirrors.china-speed.org.cn/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

composer install

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

get nodejs npm

curl -sL https://deb.nodesource.com.mirrors.china-speed.org.cn/setup_12.x | sudo -E bash -

npm install

npm config set registry https://mirrors.cloud.tencent.com/npm/
npm config set sass_binary_site https://mirrors.cloud.tencent.com/npm/node-sass

一个包含 apt、composer、nodejs 国内加速的 Dockerfile 是这样的:

FROM php:7.4-apache
WORKDIR /var/www/laravel/

RUN find /etc/apt/ -name "*.list" -print0 | xargs -0 sed -i 's/[a-z]\+.debian.org/mirrors.cloud.tencent.com/g'

RUN curl -sL https://deb.nodesource.com.mirrors.china-speed.org.cn/setup_12.x | bash -
RUN curl -sS https://getcomposer.org.mirrors.china-speed.org.cn/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN apt-get update \
    && apt-get install -y \
    icu-devtools \
    libicu-dev libssl-dev libzip-dev \
    nodejs \
    unzip \
    zlib1g-dev

COPY package.json /var/www/laravel/
COPY package-lock.json /var/www/laravel/
RUN npm install
COPY resources/js /var/www/laravel/resources/js
COPY resources/sass /var/www/laravel/resources/sass
COPY webpack.mix.js /var/www/laravel/
RUN npm run production

COPY composer.json /var/www/laravel/
COPY composer.lock /var/www/laravel/
RUN composer install --no-autoloader --no-scripts --no-dev

COPY . /var/www/laravel/
RUN composer install --optimize-autoloader --no-dev
上一篇上传 Generic 类型制品
文档是否对您有用?
感谢反馈有用
感谢反馈没用