我遇到的场景规模较大,F5后有很多个仓库。 并且仓库直接还存在同步关系,因为拉取镜像走的是F5,当碰到莫名其妙的原因(仓库挂了,或者维护、磁盘满了),上送到根仓库的镜像没有同步到其他所以的仓库,就会导致应用在使用的时候拉不到镜像,全量同步又太消耗资源,而我能做的也只是通过计划任务在特定的时间,对当天上送的镜像进行检查并推送到其他仓库,减少手动同步的次数
一、安装harbor仓库
#拉取软件包
wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v2.3.3/harbor-offline-installer-v2.3.3.tgz
#安装docker-compose
curl -L "https://ghproxy.com/https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#解压缩拷贝模板文件
tar -zxvf harbor-offline-installer-v2.3.3.tgz && cd harbor
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
5 hostname: 10.0.16.15 #修改ip
6
7 # http related config
8 http:
10 port: 30007 #对外端口暴露
11
12 # https related config
13 #https: #将https这块和证书都注释掉
14 # https port for harbor, default is 443
15 # port: 443
16 # The path of cert and key files for nginx
17 # certificate: /your/certificate/path
18 # private_key: /your/private/key/path
47 data_volume: /approot1/paas/harbor/data #定义数据目录
启动
#--with-chartmuseum 支持后面传helm用的包
./install.sh --with-chartmuseum
登录查看
http://101.43.156.78:30007/
二、安装django框架
我们要制作一个镜像需要一个前台进程,我们这里就直接用django的
参考文档
https://blog.csdn.net/qq_42883074/article/details/130720709
安装库
//配置清华镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
//安装
pip install django==4.2.1
创建项目
#在windows终端执行
django-admin startproject Django_demo
cd django_demo
python manage.py startapp app_demo
修改全局配置
vi Django_demo/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app_demo', #注册新创建的应用app
]
ALLOWED_HOSTS = ['*'] #允许所有人访问
LANGUAGE_CODE = 'zh-Hans' #中文语言
TIME_ZONE = 'Asia/Shanghai' #中国时区
编辑视图函数
vi app_demo/view.py
from django.http import HttpResponse
def login(request):
return HttpResponse("登录页面")
添加路由方法
vi Django_demo/urls.py
from django.urls import path,re_path
from app_demo import views
urlpatterns = [
path("login/", views.login),
re_path(r'^hello/$', views.login),
]
运行测试
python manage.py runserver
访问测试
http://127.0.0.1:8000/login/
三、镜像环境准备
假设我们上面已经开发好了一个完整的项目,现在我需要将他打包成镜像
1、拉取基础镜像
#拉取基础镜像
docker pull python:alpine
#查看镜像大小
docker images | grep python
2、 测试镜像环境
我们拿到一个基础镜像的时候其实不太知道他符不符合咱们的要求,我们就先建一个临时的容器去测试一下
#创建容器
docker run -itd --name test python:alpine sh
#登录容器
docker exec -it test sh
#查看python 版本
python -V
#查看并添加pip 源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
这边我们确定这个容器已经把基础python环境架起来了,pip命令也有,现在我们去idea把依赖的库整理下准备打包
四、制作镜像
1、保存项目依赖库文件
pip freeze > requirements.txt
获取到依赖库的文件列表后,我们把整个项目目录扔到linux 的/approot1/目录下
刚才忘了一个东西,因为我们是在项目根目录的位置获取的依赖,但打包的时候只需要Django_demo 目录即可,这里要把库列表文件仍到打包的目录下
2、编写dockerfile
vi Dockerfile
FROM python:alpine
COPY ./Django_demo /data/
WORKDIR /data
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
&& pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn \
&& pip install --upgrade pip \
&& pip install -r requirements.txt
CMD ["python","./manage.py","runserver","0.0.0.0:8000"]
编译
docker build . -f Dockerfile -t django:v1
3、部署容器
#创建容器
docker run -d --name test3 -p 30009:8000 django:v1
#访问页面
http://101.43.156.78:30009/login/