构建银行应用:Duomly Golang课程实践指南

需积分: 9 0 下载量 8 浏览量 更新于2024-12-10 收藏 6KB ZIP 举报
资源摘要信息:"go-bank-backend:这是 Duomly 课程的代码 - 通过构建银行应用程序来学习 Golang" ### 知识点概述 该资源是关于使用Go语言(又称Golang)开发银行后端应用程序的课程代码,提供了一套实践课程,通过构建一个功能性的银行应用程序来加深对Go语言的理解和应用。 ### Go语言编程基础 - Go语言是Google开发的一种静态类型、编译型语言,具有垃圾回收功能。它简洁、快速,并且具有良好的并发处理能力。 - Go语言的数据类型、控制结构、函数、接口等基本语法元素。 - Go语言的并发模型,特别是goroutines和channels的使用方法。 ### Go语言在银行系统开发中的应用 - 设计和实现RESTful API,使用Go的net/http包。 - 数据库连接和操作,本项目使用PostgreSQL作为数据库系统,因此需要对PostgreSQL进行操作。 - 数据库迁移管理,使用Go语言编写数据库迁移脚本,管理数据库结构的版本。 ### PostgreSQL数据库实践 - PostgreSQL数据库安装和配置。 - 使用Go语言连接PostgreSQL数据库,主要通过数据库驱动实现。 - 数据库迁移操作,包括创建新表、修改表结构、插入和查询数据等。 ### 代码组织和结构 - 项目的目录结构,如何组织不同类型的Go文件(例如main包、模型、存储库、服务、控制器等)。 - 代码模块化,通过合理的划分,使得代码易于维护和扩展。 - 使用Go的包管理来管理依赖。 ### 实际开发流程 - 如何通过代码来设置和初始化数据库连接,可能涉及到配置文件的读取。 - 运行数据库迁移脚本,将数据库表结构迁移到期望的版本。 - 编写API接口,处理HTTP请求和响应。 - 错误处理和日志记录,确保应用程序的稳定运行和问题追踪。 ### 环境配置和命令行操作 - 设置环境变量,例如数据库连接字符串。 - 使用命令行操作来运行Go程序和管理数据库迁移。 - Go语言的包管理和模块化工具(如go mod)的使用。 ### 示例代码说明 - main.go文件,程序的入口点,可能会包含API服务器的启动逻辑以及数据库迁移的调用。 - exfectly-db.go和migrations.go文件,这两个文件中涉及到数据库连接字符串的设置和数据库迁移逻辑。 - 注释和取消注释代码来启动数据库迁移或API,这涉及到代码版本控制和开发过程中的临时更改。 ### 教学目标和学习成果 - 学习Go语言的基础知识,包括语法、并发编程、类型系统等。 - 掌握使用Go语言开发RESTful API的方法。 - 学习如何操作和迁移关系型数据库,特别是在Go语言环境下。 - 获得构建一个完整的银行后端应用的经验,包括理解业务逻辑和架构设计。 ### 课程资源的使用 - 该代码资源是作为Duomly课程的实践部分,学员可以按照课程指导操作,通过实际编码来学习Go语言。 - 课程通过逐步引导的方式,从搭建数据库开始,逐步深入到API开发和数据库迁移,帮助学员构建一个功能完整的银行后端系统。 通过以上内容的学习和实践,学员能够提升使用Go语言进行服务器端开发的能力,尤其是在开发涉及复杂逻辑和数据处理的银行后端系统时。

我想将frontend 也是用volumes,将其映射到/app/frontend目录,在/app/frontend下install以及build,如何实现 docker-compose.yml文件: version: '3' services: frontend: build: context: ./frontend dockerfile: Dockerfile ports: - 8010:80 restart: always backend: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: python manage.py runserver 0.0.0.0:8000 ports: - 8011:8000 restart: always celery-worker: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server worker -l info --pool=solo --concurrency=1 depends_on: - redis - backend restart: always celery-beat: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler depends_on: - redis - backend restart: always redis: image: redis:latest ports: - 6379:6379 restart: always mysql: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=sacfxSql258147@ ports: - 8016:3306 volumes: - ./mysql:/var/lib/mysql restart: always frontend:dockerfile文件 FROM node:16.18.1 WORKDIR /app/frontend COPY package*.json ./ RUN npm install COPY . . RUN npm run build:prod FROM nginx:latest COPY --from=0 /app/frontend/dist/ /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

2023-07-14 上传

我的代码跟docker-compose.yml文件放在/app目录下 /app/frontend存放前端代码 /app/backend存放后端代码 我想直接在/app/frontend直接install跟build再拷贝到容器内,如何实现 docker-compose.yml文件: version: '3' services: frontend: build: context: ./frontend dockerfile: Dockerfile ports: - 8010:80 restart: always backend: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: python manage.py runserver 0.0.0.0:8000 ports: - 8011:8000 restart: always celery-worker: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server worker -l info --pool=solo --concurrency=1 depends_on: - redis - backend restart: always celery-beat: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler depends_on: - redis - backend restart: always redis: image: redis:latest ports: - 6379:6379 restart: always mysql: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=sacfxSql258147@ ports: - 8016:3306 volumes: - ./mysql:/var/lib/mysql restart: always frontend:dockerfile文件: FROM node:16.18.1 WORKDIR /app/frontend COPY package*.json ./ RUN npm install COPY . . RUN npm run build:prod FROM nginx:latest COPY --from=0 /app/frontend/dist/ /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

2023-07-14 上传