背景
提高研发装包构建基础镜像的速度,特搭建此 pypi 私有源
搭建流程,使用k8s 方式来部署集群
- Dockerfile (官方python:3.9-slim 基础镜像即可,CMD命令即是无账号密码访问私有源)
root@172-16-204-75:/data/devops/pypiserver
FROM uhub.service.ucloud.cn/deeplang/python:3.9-slim
RUN pip install pypiserver
RUN pip install gunicorn
ENV PYPISERVER_ROOT=/data/packages
RUN mkdir /opt/output/logs -p
RUN apt-get update -y && apt-get install net-tools procps -y
EXPOSE 8080
COPY start.sh /app/start.sh
RUN chmod +x /app/start.sh
CMD ["/app/start.sh"]
root@172-16-204-75:/data/devops/pypiserver
gunicorn -w 4 --threads 8 --worker-connections 1000 --error-logfile /opt/output/logs/error.log -b 0.0.0.0:8080 'pypiserver:app(root="/data/packages",password_file=".",authenticated=[])'
docker build -t uhub.service.ucloud.cn/deeplang/my-pypiserver:v5-202501081723 .
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: pypiserver
name: pypiserver
spec:
replicas: 1
selector:
matchLabels:
app: pypiserver
template:
metadata:
labels:
app: pypiserver
spec:
containers:
- name: pypiserver
image: uhub.service.ucloud.cn/deeplang/my-pypiserver:v4
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 5
initialDelaySeconds: 10
periodSeconds: 6
successThreshold: 1
tcpSocket:
port: 8080
timeoutSeconds: 5
ports:
- containerPort: 8080
readinessProbe:
failureThreshold: 5
initialDelaySeconds: 10
periodSeconds: 6
successThreshold: 1
tcpSocket:
port: 8080
timeoutSeconds: 5
volumeMounts:
- mountPath: /data/packages
name: packages-volume
volumes:
- name: packages-volume
nfs:
path: /private/pypiserver
server: 172.x.x.x
kind: Service
apiVersion: v1
metadata:
name: pypiserver
namespace: pypiserver
labels:
name: pypiserver
spec:
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: pypiserver
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 1024m
nginx.ingress.kubernetes.io/proxy-connect-timeout: "601"
nginx.ingress.kubernetes.io/proxy-read-timeout: "601"
nginx.ingress.kubernetes.io/proxy-send-timeout: "601"
nginx.ingress.kubernetes.io/whitelist-source-range: 39.98.1.1
name: pypiserver
namespace: pypiserver
spec:
ingressClassName: nginx
tls:
- hosts:
- test.example.com
secretName: pypiserver-tls
rules:
- host: test.example.com
http:
paths:
- backend:
service:
name: pypiserver
port:
number: 80
path: /
pathType: Prefix
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!