背景
提高研发装包构建基础镜像的速度,特搭建此 pypi 私有源
搭建流程,使用k8s 方式来部署集群
- Dockerfile (官方python:3.9-slim 基础镜像即可,CMD命令即是无账号密码访问私有源)
FROM uhub.service.ucloud.cn/deeplang/python:3.9-slim
RUN pip install pypiserver
EXPOSE 8080
CMD ["pypi-server", "-p", "8080", "--disable-fallback", "-a", ".", "-P", ".", "/data/packages"]
docker build -t uhub.service.ucloud.cn/deeplang/my-pypiserver:v4 .
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