koal是一个开源的音乐播放web端的网站,可以上传自己的一些音乐资源供自己收听,防止被软件和谐和下架。

docker-compose安装

docker和docker-compose的安装相关就略过了,如果不知道如何安装,可以看一下博主的Docker学习手册

以下是koel的docker相关文件和教程仓库,如果访问不到,可以下载百度网盘的备份。

  1. 下载所需资源包,并上传至服务器目录下/mnt/app/music

  2. 解压缩unzip docker-master.zip

  3. 进入解压后的文件夹,文件夹中有使用mysql和使用postgres数据库的两个docker-compose文件,因为我使用的是mysql,所以只涉及到mysql的docker-compose文件。

  4. 修改docker-compose文件

    version: '3'
    
    services:
      koel:
        container_name: music
        image: phanan/koel
        depends_on:
          - database
        ports:
          - 5580:80
        environment:
          - DB_CONNECTION=mysql
          - DB_HOST=music-mysql57 #注意,该配置项要和下面MySQL的容器名一致
          - DB_USERNAME=koel
          - DB_PASSWORD=<koel_password>
          - DB_DATABASE=koel
        volumes:
        # 容器映射卷,酌情替换
          - /mnt/docker/music/data:/music  # 音乐存放地址,容器内默认是在/music下,也可以修改
          - /mnt/docker/music/covers:/var/www/html/public/img/covers # 封面图片
          - /mnt/docker/music/search_index:/var/www/html/storage/search-indexes # 索引文件
    
      database:
        container_name: music-mysql57
        image: mysql/mysql-server:5.7
        volumes:
          - /mnt/docker/music/db:/var/lib/mysql
        environment:
          - MYSQL_ROOT_PASSWORD=<root_password>
          - MYSQL_DATABASE=koel
          - MYSQL_USER=koel
          - MYSQL_PASSWORD=<koel_password>
    
    volumes:
      db:
        driver: local
      music:
        driver: local
      covers:
        driver: local
      search_index:
        driver: local
    
    
  5. 执行docker-compose文件。docker-compose -f docker-compose.mysql.yml up -d

  6. 容器启动后,在docker-compose中配置的文件夹应该已经创建完成,给予权限,chmod -R 777 /mnt/docker/music,如果配置的目录在docker-compose的文件夹下,那么就不用配置,否则则需要配置权限。

  7. 进入容器中,docker exec -it <container_name> bash

  8. 初始化koel环境

    • php artisan koel:init --no-assets
    • 初始化过程中,会让你设置音乐存放目录,如果在docker-compose中修改过容器中目录,那么则输入对应的目录,如果没有修改过,直接回车就行了。
  9. 如果此处没有报错,那么则代表已经初始化完毕,访问主页。http://localhost:5580

    • 账号:admin@koel.dev
    • 密码:KoelIsCool
  10. 完成,respect

通过nginx配置https后,无法正常访问,原因:在代码中访问了非https的资源,导致了跨域,所以暂时将https搁置,等待作者更新。