请大家推荐个开源的小程序商城

请大家推荐个开源的微信小程序商城,P1需求如下:

  1. 首页商品列表展示
  2. 商品详情展示
  3. 按分类获取商品
  4. 服务端独立部署
  5. 多店铺

P2 需求如下:

  1. 下单支付流程
  2. 后台订单流转流程
  3. 订单数据导出
  4. 最好是有现成的 docker 镜像

今天还问 copilot 推荐了 nideshop 项目,但代码都是5年前的了,跑的时候一直报错,让我升级客户端。我没有太多 node 经验,不太清楚是哪个包的问题,我估计还是项目太老了的问题吧。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
slowlyo
1个月前 评论
sanders (楼主) 1个月前

crmeb 和 楼上的 萤火商城 都可以

1个月前 评论
sanders

萤火搭起来了,开源版本貌似只能开一个店,不过也只是用来演示用,主要流程自己测了一轮,看上去应该够用了,交给同事去补充资料了。

本地先用 docker compose 把主要的坑踩完,最终的配置:
Dockerfile:

FROM php:7.4-fpm-alpine3.16
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \
    && apk update \
    && apk add freetype-dev jpeg-dev libpng-dev git \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd pdo_mysql bcmath \
    && docker-php-ext-enable bcmath \
    && mkdir -p /var/www/html
COPY ./yoshop /var/www/html/yoshop
WORKDIR /var/www/html/yoshop
# 启动 php-fpm
CMD ["php-fpm", "-F"]

docker-compose.yaml

services:
  yoshop-api:
    build:
      dockerfile: Dockerfile
      context: .
    image: yoshop/api
    container_name: yoshop-api
    volumes:
      - ./api/data:/var/www/html/yoshop/data
      - ./api/install:/var/www/html/yoshop/public/install
      - ./api/uploads:/var/www/html/yoshop/public/uploads
      - ./api/temp:/var/www/html/yoshop/public/temp
      - ./api/.env:/var/www/html/yoshop/.env
      - ./api/runtime:/var/www/html/yoshop/runtime
    ports:
      - '${FPM_PORT:-9000}:9000'
    depends_on:
      - yoshop-mysql
    networks:
      - yoshop
  yoshop-mysql:
    image: 'mysql/mysql-server:8.0'
    container_name: yoshop-mysql
    ports:
      - '${FORWARD_DB_PORT:-3306}:3306'
    environment:
      MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
      MYSQL_ROOT_HOST: '%'
      MYSQL_DATABASE: '${DB_DATABASE}'
      MYSQL_USER: '${DB_USERNAME}'
      MYSQL_PASSWORD: '${DB_PASSWORD}'
      MYSQL_ALLOW_EMPTY_PASSWORD: 1
    volumes:
      - './mysql_vol:/var/lib/mysql'
    networks:
      - yoshop
    healthcheck:
      test:
        - CMD
        - mysqladmin
        - ping
        - '-p${DB_PASSWORD}'
      retries: 3
      timeout: 5s
  yoshop-nginx:
    image: 'nginx:alpine'
    container_name: yoshop-nginx
    ports:
      - '${APP_PORT:-80}:80'
    volumes:
      - ./docker/nginx:/etc/nginx/conf.d
      - ./yoshop:/var/www/html/yoshop
    networks:
      - yoshop
    depends_on:
      - yoshop-api
networks:
  yoshop:
    driver: bridge

正式用的将环境做好镜像扔到集群里,用 helm chart 部署

deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "chart.fullname" . }}
  labels:
    {{- include "chart.labels" . | nindent 4 }}
spec:
  {{- if not .Values.autoscaling.enabled }}
  replicas: {{ .Values.replicaCount }}
  {{- end }}
  selector:
    matchLabels:
      {{- include "chart.selectorLabels" . | nindent 6 }}
  template:
    metadata:
      {{- with .Values.podAnnotations }}
      annotations:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      labels:
        {{- include "chart.selectorLabels" . | nindent 8 }}
    spec:
      {{- with .Values.imagePullSecrets }}
      imagePullSecrets:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      serviceAccountName: {{ include "chart.serviceAccountName" . }}
      securityContext:
        {{- toYaml .Values.podSecurityContext | nindent 8 }}
      containers:
        - name: {{ .Chart.Name }}-http
          securityContext:
            {{- toYaml .Values.securityContext | nindent 12 }}
          image: "{{ .Values.image.http.repository }}:{{ .Values.image.http.tag | default "alpine" }}"
          imagePullPolicy: {{ .Values.image.http.pullPolicy }}
          ports:
            - name: http
              containerPort: 80
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /
              port: http
          readinessProbe:
            httpGet:
              path: /
              port: http
          resources:
            {{- toYaml .Values.resources.http | nindent 12 }}
          volumeMounts:
            - name: {{ .Chart.Name }}-code
              mountPath: /var/www/html/yoshop
            - name: {{ .Chart.Name }}-conf
              mountPath: /etc/nginx/conf.d
        - name: {{ .Chart.Name }}-fpm
          securityContext:
            {{- toYaml .Values.securityContext | nindent 12 }}
          image: "{{ .Values.image.fpm.repository }}:{{ .Values.image.fpm.tag | default "0.0.1" }}"
          imagePullPolicy: {{ .Values.image.fpm.pullPolicy }}
          ports:
            - name: fpm
              containerPort: 9000
              protocol: TCP
          resources:
            {{- toYaml .Values.resources.fpm | nindent 12 }}
          volumeMounts:
            - name: {{ .Chart.Name }}-code
              mountPath: /var/www/html/yoshop
      volumes:
        - name: {{ .Chart.Name }}-code
          hostPath:
            path: /data/yoshop/api
            type: Directory
        - name: {{ .Chart.Name }}-conf
          hostPath:
            path: /data/yoshop/nginx
            type: Directory
      {{- with .Values.nodeSelector }}
      nodeSelector:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      {{- with .Values.affinity }}
      affinity:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      {{- with .Values.tolerations }}
      tolerations:
        {{- toYaml . | nindent 8 }}
      {{- end }}
1个月前 评论
Asuna 1个月前

禾匠商城,v:chisanhe

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!