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

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

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

P2 需求如下:

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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5
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年前

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