和ChatGPT关于Swing music的一场对话(上篇)

这篇具有很好参考价值的文章主要介绍了和ChatGPT关于Swing music的一场对话(上篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

和ChatGPT关于Swing music的一场对话(上篇)

什么是 Swing Music ?

Swing Music 是一款漂亮的自托管音乐播放器,适用于您的本地音频文件。就像一个更酷的 Spotify …但带上你自己的音乐。

第一次在 reddit 上看到 Swing Music,就被其 UI 吸引了

和ChatGPT关于Swing music的一场对话(上篇)

但源码站点的releases 中只有 windowslinux 的版本

和ChatGPT关于Swing music的一场对话(上篇)

老苏不是程序员,但作为一个爱折腾的人,岂能轻易放弃,何不借助最近火的一塌糊涂的 ChatGPT,让其协助完成 Docker 版呢?于是就有了下面👇的一场对话

与 ChatGPT 的对话

以下只记录了对话的要点,不是事无巨细的完整记录。整个对话断断续续进行了 2天,其中包含了老苏查资料、编译、测试的时间

服务端

首先当然是看官方的安装手册了

和ChatGPT关于Swing music的一场对话(上篇)

说实话没看懂,虽然之前折腾过 python 的项目,但是 poetry 是什么鬼?

于是老苏向 ChatGPT 提了第一个问题


  • Q:如何将下面这段命令改编为 Dockerfile
git clone https://github.com/geoffrey45/swingmusic.git

cd swingmusic

# install dependencies using poetry
poetry install

# start the app
poetry run python manage.py

ChatGPT 很快就做出了响应,看起来是不是头头是道的?不仅给了代码,还有详细的解释


  • A:将上述命令编写为 Dockerfile 的步骤如下:
  1. 创建一个名为 Dockerfile 的文件,将以下内容复制到文件中:
FROM python:3.8-slim-buster

# 更换国内源
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN  apt-get clean

# 安装 Git 和 Poetry
RUN apt-get update && \
    apt-get install -y git && \
    curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

# 下载代码
RUN git clone https://github.com/geoffrey45/swingmusic.git /app

# 安装依赖
WORKDIR /app
RUN poetry install --no-dev

# 启动应用
CMD ["poetry", "run", "python", "manage.py"]

Dockerfile 基于 Python 3.8 官方镜像构建,安装了 GitPoetry,从 GitHub 上下载了 geoffrey45/swingmusic 项目的代码,安装了项目依赖,并在容器启动时启动了应用程序。

  1. 在命令行中进入包含 Dockerfile 文件的目录,并执行以下命令构建 Docker 镜像:

    docker build -t my-swingmusic-app .

    其中,my-swingmusic-app 是您为该 Docker 镜像指定的名称。

  2. 构建完成后,可以使用以下命令启动 Docker 容器:

    docker run --name my-swingmusic-container my-swingmusic-app

    其中,my-swingmusic-container 是您为该 Docker 容器指定的名称。

希望这些步骤能够帮助您将上述命令编写为 Dockerfile,并成功构建和运行 Docker 容器。


接来下老苏让 ChatGPT 改了阿里源、 python 的版本,同时根据编译的情况做了修正,最后得到了可以编译过的服务端的 Dockerfile 文件

FROM python:3.11-slim-buster  
  
# 改阿里源  
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list  
RUN cat /etc/apt/sources.list  
RUN rm -Rf /var/lib/apt/lists/*
  
# 安装 Git 和 Poetry  
RUN apt-get update && \  
    apt-get install -y git curl
  
RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -  
ENV PATH /root/.local/bin:$PATH  
  
# 下载代码  
RUN git clone https://ghproxy.com/github.com/geoffrey45/swingmusic.git /app  
  
# 安装依赖  
WORKDIR /app  
#RUN pip install pyinstaller && \  
RUN pip install --upgrade pip && \  
    poetry install

EXPOSE 1970
# 启动应用  
CMD ["poetry", "run", "python", "manage.py"]

客户端

如法炮制,让 ChatGPT 将客户端的安装过程转为 Dockerfile 文件

和ChatGPT关于Swing music的一场对话(上篇)


  • Q:如何将下面这段命令改编为 Dockerfile
git clone https://github.com/geoffrey45/swing-client.git

cd swing-client

# Install dependencies
yarn install

# Start the development server
yarn dev

# Build the project
yarn build

ChatGPT 同样很快就有了回应


  • A:以下是将这段命令编写成 Dockerfile 的示例:
FROM node:latest

RUN apt-get update && apt-get install -y git

RUN git clone https://github.com/geoffrey45/swing-client.git /app

WORKDIR /app

RUN yarn install

RUN yarn build

EXPOSE 3000

CMD ["yarn", "start"]

在该 Dockerfile 中,我们使用了 Node.js 的官方镜像作为基础镜像,并安装了 Git 。接着,我们克隆了 Swing 客户端的代码并将其复制到 Docker 容器中的 /app目录下。然后,我们在 /app 目录中运行了 yarn installyarn build 命令来安装依赖和构建项目。最后,我们暴露了容器的 3000 端口并在容器启动时运行了 yarn start 命令。


接下来,老苏要求改为多阶段,采用阿里的源等多次反复之后,得到了下面的 Dockerfile

# 第一阶段:构建应用
FROM node:latest as builder

RUN apt-get update && apt-get install -y git

# 设置淘宝镜像源
RUN npm config set registry https://registry.npm.taobao.org/

RUN git clone https://github.com/geoffrey45/swing-client.git /app

WORKDIR /app

RUN yarn install

RUN yarn build

# 第二阶段:运行应用
FROM node:latest

# 设置淘宝镜像源
RUN npm config set registry https://registry.npm.taobao.org/

COPY --from=builder /app /app

WORKDIR /app

EXPOSE 3000

CMD ["yarn", "start"]

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

在这个项目中,老苏还是有贡献的 😂 ,对 ChatGPT 给的代码进行了融合、编译和调试,最终的 Dockerfile 是下面这样的

#前端构建    
FROM node:latest as builder    
    
# 改阿里源      
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list    
RUN cat /etc/apt/sources.list      
RUN rm -Rf /var/lib/apt/lists/*    
    
# 安装 Git    
RUN apt-get update && \    
    apt-get install -y git    
    
# 设置yarn镜像为国内镜像    
RUN yarn config set registry https://registry.npm.taobao.org --global && \    
    yarn config set disturl https://npm.taobao.org/dist --global    
    
# 下载客户端代码    
RUN git clone https://github.com/geoffrey45/swing-client.git /app    
    
# 删除 yarn.lock,否则改源没有用    
RUN rm -Rf /app/yarn.lock    
    
# 安装依赖     
WORKDIR /app    
RUN yarn install && \    
    yarn build    
    
# 后端构建    
FROM python:3.11-slim-buster     
MAINTAINER laosu<wbsu2003@gmail.com> 
      
# 改阿里源  
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list      
RUN cat /etc/apt/sources.list      
RUN rm -Rf /var/lib/apt/lists/*    
      
# 安装 Git 和 Poetry      
RUN apt-get update && \      
    apt-get install -y git curl    
      
RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -      
ENV PATH /root/.local/bin:$PATH      
      
# 下载服务端代码      
RUN git clone https://github.com/geoffrey45/swingmusic.git /app  
  
# 复制前端    
COPY --from=builder /app/dist/. /app/client/.    
  
# 安装依赖      
WORKDIR /app      
#RUN pip install pyinstaller && \      
RUN pip install --upgrade pip && \      
    poetry install    
    
EXPOSE 1970    
ENV XDG_CONFIG_HOME=/data  
  
# 替换 localhost 为 0.0.0.0,否则容器外无法访问  
RUN sed -i "s@localhost@0.0.0.0@g" /app/app/settings.py  
  
# 启动应用      
CMD ["poetry", "run", "python", "manage.py"]

构建镜像和容器运行的基本命令如下👇

# 新建目录
mkdir swingmusic

# 进入目录
cd swingmusic

# 创建 Dockerfile 文件
touch Dockerfile

# 构建镜像  
docker build -t wbsu2003/swingmusic:v1 .  

# 运行容器  
docker run -d \
   --name swingmusic \
   -p 1970:1970 \
   -v $(pwd)/data:/data \
   -v $(pwd)/music:/music \
   wbsu2003/swingmusic:v1

下篇进入 Swing Music 的安装、使用环节,咱们周三不见不散。

参考文档

swing-opensource/swingmusic: Swing Music is a beautiful, self-hosted music player for your local audio files. Like a cooler Spotify … but bring your own music.
地址:https://github.com/swing-opensource/swingmusic

swing-opensource/swingmusic-client: Browser-based client for the swing music player: (https://github.com/swing-opensource/swingmusic). Powered by VueJS, Typescript, Pinia and Axios
地址:https://github.com/swing-opensource/swingmusic-client文章来源地址https://www.toymoban.com/news/detail-417280.html

到了这里,关于和ChatGPT关于Swing music的一场对话(上篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 Amazon Lambda 进行无服务器计算:云架构中的一场革命

    引言 十年前,无服务器架构还像是痴人说梦。不再如此了! 有了 Amazon Lambda,我们现在可以建构和运行应用程序而不需要考虑服务器。云供应商会无缝地处理所有服务器的供应、扩展和管理。我们只需要关注代码。 这为云部署带来了前所未有的敏捷性、自动化和优化。但是,要发

    2024年02月10日
    浏览(41)
  • 对KMP算法的一点碎碎念——上篇

    假设有模式串T为: a b a b a c ,求解与其对应的next数组为多少 1.1 前置知识-最长公共前后缀LCP 1.1.1 前缀与后缀 前缀的概念:前缀是 不包含最后一个字符 的所有 以第一个字符开头 的任意子串 后缀的概念:后缀是 不包含第一个字符 的所有 以最后一个字符结尾 的任意子串 例

    2024年02月07日
    浏览(79)
  • 揭秘AI写作的七大悖论:一场人脑与机脑的深度对话

    大家好,小发猫降重今天来聊聊揭秘AI写作的七大悖论:一场人脑与机脑的深度对话,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 揭秘AI写作的七大悖论:一场人脑与机脑的深度对话 在AI技术日新月异的今天

    2024年04月14日
    浏览(38)
  • 关于 java如何集成chatgpt,如何集成到html5前端界面,如何实现多伦对话,如何申请域名,如何申请服务器,搭建环境(一)

    Java如何集成ChatGPT,如何集成到HTML5前端界面,如何实现多伦对话 随着人工智能技术的不断发展,聊天机器人已经成为了人们日常生活中不可或缺的一部分。ChatGPT是一种基于自然语言处理技术的聊天机器人,它可以通过对话来理解用户的需求,并给出相应的回答。在本文中,

    2024年02月03日
    浏览(75)
  • 我与 INDCODE AI 创作助手的一次对话

    本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 本文介绍了 CSDN 嵌入式 INSCODE AI 创作助手 的一次体验,从聊天到编程,五花八门,纯属好玩,不是什么正经测试。 【原创:AhcaoZhu大侠】 没太注意,CSDN创作页面上,啥时候多出一个 创作助手 ,见下图:

    2024年02月07日
    浏览(38)
  • 来一场关于元宇宙的灵魂辩论|BOOK DAO内容共建招募

    「 备选问题  」 1. 你认为元宇宙最重要的特点是什么?用一句话描述你理解的 “元宇宙” 2. 元宇宙是游戏2.0吗?它与游戏有什么不同? 3. 元宇宙是否需要区块链?是否需要NFT?各扮演什么角色? 4. 元宇宙是否需要经济系统,如果需要,如何设计? 5. 在元宇宙中,你如何证

    2024年01月21日
    浏览(41)
  • 关于括号的一系列问题

    对于只出现一种括号的字符串,看这个字符串中的括号是否匹配 以及 匹配的个数: 一般来说有两种匹配方式: 例如: (()()()) 第一种匹配是此字符串有4组括号对匹配完成 第二种匹配是此字符串有3组括号对匹配完成 对于第一种匹配方式:有两种选择:栈或者直接

    2024年02月11日
    浏览(28)
  • 关于golang锁的一点东西

    本文基于go 1.19.3 最近打算再稍微深入地看下golang的源码,先从简单的部分入手。正巧前段时间读了操作系统同步机制的一点东西,那么golang这里就从锁开始好了。 在这部分内容中,可能不会涉及到太多的细节的讲解。更多的内容会聚焦在我感兴趣的一些点,以及整体的设计

    2024年02月14日
    浏览(42)
  • [RPC]关于RPC的一点理解

    以下内容仅为个人理解,不作正确性保证,感谢批评指正 在分布式计算中,远程过程调用 (RPC) 是指计算机程序导致过程(子例程)在不同的地址空间(通常在共享网络上的另一台计算机上)中执行, 它的编码就好像是普通(本地)过程调用一样,程序员没有 显式 编码远程

    2024年02月10日
    浏览(41)
  • 关于秒杀系统的一系列问题

    阻塞队列怎么么实现?超卖问题?整体怎么实现? 5 设计一个秒杀系统 特点:高并发,请求量远大于库存量,只有少数能成功;逻辑比较简单,下单减库存; 设计理念:**限流,**只有少部分流量能进入后端; 削峰 ,将瞬间的高流量转换成平稳的流量(比如异步处理)。 内

    2024年02月01日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包