プロジェクト コードをミラー イメージにして、tar アーカイブ ファイルとして保存します。

1. プロジェクトの make.sh と Dockerfile、requirements.txt を記述します。

1.make.shファイルテンプレート

#!/usr/bin/env bash
echo "开始制作镜像..."
#用日期标记镜像版本
image_tag=`date +%Y%m%d` #_%H%M
echo "当前时间:$image_tag"
#制作镜像,使用的腾讯云(用的当前目录下的Dockerfile)
docker build -t ccr.ccs.tencentyun.com/my_test/my_test_project:v${image_tag} . 

echo "制作镜像成功!"
#登录腾讯云账号
docker login --username=my_user_name -p=my_password ccr.ccs.tencentyun.com
#向腾讯云推送制作好的镜像
docker push ccr.ccs.tencentyun.com/my_test/my_test_project:v${image_tag}

echo "镜像版本保存"
#将刚才制作好的镜像版本标识为latest
docker tag ccr.ccs.tencentyun.com/my_test/my_test_project:v${image_tag} ccr.ccs.tencentyun.com/my_test/my_test_project:latest
#向腾讯云推送latest镜像
docker push ccr.ccs.tencentyun.com/my_test/my_test_project:latest

echo "删除本地镜像"
docker rmi ccr.ccs.tencentyun.com/my_test/my_test_project:v${image_tag}
docker rmi ccr.ccs.tencentyun.com/my_test/my_test_project:latest

2.Dockerfileテンプレート

#镜像基于某个python版本镜像
FROM ccr.ccs.tencentyun.com/my_test/python_base:data_v20230526

#设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN mkdir -p /usr/src/app
ENV PYTHONPATH=/usr/src/app
WORKDIR /usr/src/app


#复制当前目录下所有文件到镜像里
COPY . /usr/src/app
COPY requirements.txt /usr/src/app/requirements.txt
#为镜像安装需要的pyton包
RUN pip install -r /usr/src/app/requirements.txt
CMD python

3.requirements.txt (プロジェクトに必要な Python パッケージ、および Python パッケージのバージョン)

#列如
numpy==1.14.5
pandas==0.21.0
lxml==4.2.3
SQLAlchemy==1.2.10
SciPy==1.1.0
pymysql==0.9.2
requests==2.19.1
pyyaml==3.13
xlrd==1.1.0
arrow==0.13.2
statsmodels==0.9.0
patsy==0.5.0
redis==2.10.6

2. プロジェクトのソース コード ファイルを gitlab に置きます。

3. jenkins を使用して、プロジェクトの更新時にミラー イメージを自動的にパッケージ化します。

1. jenkins で新しいプロジェクトを作成します。
オプション: Freestyle ソフトウェア プロジェクトの構築

2. ソースコード管理を構成します。
ソースコード管理に git を選択し、リポジトリ URL にプロジェクトの gitlab リンクを入力します。
Credentials は、git アカウントのアカウント パスワードを設定します。
指定ブランチ(空の場合はanyを意味します): 指定ブランチ列がmasterを指定している場合は、*/masterと記入します。

3. ビルドトリガーを構成します。
ポーリング SCM を選択し、スケジュールを入力します * * * * *
(つまり、git コードが 1 分ごとに更新されているかどうかを判断し、更新されている場合は最新のコードをプルし、ビルド ステップを自動的に実行します)

4. ビルドを構成します。
ビルドステップを追加して、「ssh を使用してリモートホストでシェルスクリプトを実行する」を選択します。
次に、SSH サイトは、パッケージ化を担当する Linux ホストを選択します。
コマンドは次のように書き込みます。

#登录腾讯云docker账号
sh /mypath/docker_login.sh
cd /mypath/jenkins_data/workspace/my_test_project
#为make.sh文件赋执行权限
chmod 777 make.sh
#运行make.sh(用最新代码制作镜像,并推送到腾讯云仓库)
./make.sh

4. イメージを tar アーカイブとして保存します。

#拉下最新的项目镜像
docker push ccr.ccs.tencentyun.com/my_test/my_test_project:latest
#把镜像保存为tar归档文件
docker save -o my_test_project_v20230526.tar ccr.ccs.tencentyun.com/my_test/my_test_project:latest

5. アーカイブ ファイルを使用します。(通常は保存とロードで十分です)
1.dockerloadはdockersaveコマンドでエクスポートしたイメージをインポートします。

docker load < my_test_project_v20230526.tar 

2. docker import はアーカイブからミラーイメージを作成します。

docker import  my_test_project_v20230526.tar  new_name:new_version

3. laod と import の違い。
docker import は通常、docker export と組み合わせて使用​​されます。
docker load は通常、docker save と組み合わせて使用​​されます。
イメージ階層やメタデータを含むイメージ全体をインポートする必要がある場合は、docker load コマンドを使用する必要があります。
コンテナーのファイル システムをインポートして新しいイメージに変換するだけの場合は、docker import コマンドを使用できます。

5. 後で使用するために、tar ファイルを Tencent Cloud cos オブジェクト ストレージにアップロードすることもできます。

おすすめ

転載: blog.csdn.net/qq_44821149/article/details/130887990