PicImpact icon indicating copy to clipboard operation
PicImpact copied to clipboard

使用minio作为s3存储,k8s部署picimpact,上传照片失败

Open yyzsec opened this issue 11 months ago • 5 comments

s3配置信息: Image

console报错信息: [Error: getaddrinfo ENOTFOUND pic.http] { errno: -3008, code: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'pic.http', '$metadata': [Object] }

代码中没找到相关的信息,貌似是请求网络的时候请求hostname变成了pic.http很奇怪。

yyzsec avatar Jan 17 '25 03:01 yyzsec

非常感谢您提交了 issues,我们很高兴能够与您一起合作解决这个问题。我们将尽快进行审核,并会在 24 小时内回复您。在此期间,如有任何问题,请随时联系我们。再次感谢您的贡献!

github-actions[bot] avatar Jan 17 '25 03:01 github-actions[bot]

附上k8s部署时候的配置,应该是没问题的:

apiVersion: v1
kind: Namespace
metadata:
  name: picimpact-system
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: picimpact-config
  namespace: picimpact-system
data:
  DATABASE_URL: "postgresql://picimpactuser:[my-pass-****]@picimpact-postgresql:5432/picimpactdb"
  AUTH_SECRET: "[my-pass-****]"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pgdata
  namespace: picimpact-system
spec:
  storageClassName: longhorn
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: picimpact-postgresql
  namespace: picimpact-system
spec:
  selector:
    matchLabels:
      app: picimpact-postgresql
  serviceName: "postgresql"
  replicas: 1
  template:
    metadata:
      labels:
        app: picimpact-postgresql
    spec:
      containers:
      - name: postgres
        image: postgres:13
        ports:
        - containerPort: 5432
          name: postgres
        env:
        - name: POSTGRES_DB
          value: "picimpactdb"
        - name: POSTGRES_USER
          value: "picimpactuser"
        - name: POSTGRES_PASSWORD
          value: "[my-pass-****]"
        volumeMounts:
        - name: pgdata
          mountPath: /var/lib/postgresql/data/postgresql
  volumeClaimTemplates:
  - metadata:
      name: pgdata
    spec:
      storageClassName: longhorn
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  name: picimpact-postgresql
  namespace: picimpact-system
spec:
  ports:
  - port: 5432
    name: postgres
  clusterIP: None # Headless service for stateful set
  selector:
    app: picimpact-postgresql
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: picimpact
  namespace: picimpact-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: picimpact
  template:
    metadata:
      labels:
        app: picimpact
    spec:
      containers:
        - name: picimpact
          image: besscroft/picimpact:latest
          ports:
            - containerPort: 3000
          env:
            - name: DATABASE_URL
              valueFrom:
                configMapKeyRef:
                  name: picimpact-config
                  key: DATABASE_URL
            - name: AUTH_SECRET
              valueFrom:
                configMapKeyRef:
                  name: picimpact-config
                  key: AUTH_SECRET
---
apiVersion: v1
kind: Service
metadata:
  name: picimpact-service
  namespace: picimpact-system
spec:
  ports:
    - protocol: TCP
      port: 3000
      targetPort: 3000
  selector:
    app: picimpact

yyzsec avatar Jan 17 '25 03:01 yyzsec

目前使用逻辑是会强制添加上 https://......

besscroft avatar Jan 17 '25 16:01 besscroft

目前使用逻辑是会强制添加上 https://......

嗯嗯,我debug也破案了,不支持http://,而是为拼接https://,导致最后拼接出来的路径为 https://pic.http://192... ,如果后续不打算支持可以关闭该issue,感谢作者!

yyzsec avatar Jan 18 '25 05:01 yyzsec

我后面抽空试一下这样做是否可行,近期生病,短时间内没精力弄了。

besscroft avatar Jan 18 '25 15:01 besscroft