🤖 Assistant

好的,这是使用 docker-compose.yml 文件来部署 NeverIdle 的方法,包括支持 ARM 和 AMD64 架构,并且可以覆盖默认的 CMD 参数:

version: "3.9"  # 根据你的 Docker Compose 版本调整

services:
  neveridle:
    image: neveridle:latest
    build:
      context: .
      dockerfile: Dockerfile
      args:
        ARCH: ${ARCH:-arm64} # 默认 ARM64,可通过环境变量覆盖
    restart: unless-stopped
    command: ["-c", "1h", "-m", "2", "-n", "4h"] # 覆盖 Dockerfile 中的 CMD

解释:

  • version: "3.9": 指定 Docker Compose 文件的版本。请根据你的 Docker Compose 版本进行调整。
  • services:: 定义要运行的服务,这里只有一个 neveridle 服务。
  • image: neveridle:latest: 指定使用的镜像。
  • build:: 定义如何构建镜像。

    • context: .: 构建上下文,表示当前目录(包含 Dockerfile 的目录)。
    • dockerfile: Dockerfile: 指定要使用的 Dockerfile。
    • args:: 定义构建镜像时传递的参数。

      • ARCH: ${ARCH:-arm64}: ARCH 构建参数的值,使用环境变量 ARCH 的值,如果没有设置,则默认为 arm64。这样就可以通过设置 ARCH 环境变量来构建不同架构的镜像。
  • restart: unless-stopped: 如果容器退出,自动重启,除非手动停止。
  • command:: 重要! 这个用来覆盖 Dockerfile 中定义的 CMD 指令。 这里设置了示例参数,你可以根据你的需要修改。

使用方法:

  1. 保存为 docker-compose.yml: 将上面的内容保存到一个名为 docker-compose.yml 的文件中,确保与 Dockerfile 在同一目录下。
  2. 构建和运行(ARM64):

    docker-compose up -d

    这会构建镜像(如果不存在),然后以后台模式运行容器。 由于yaml文件里设置了ARCH的默认值为arm64,所以可以构建arm64的镜像

  3. 构建和运行(AMD64):

    ARCH=amd64 docker-compose up -d

    在构建和运行之前设置 ARCH 环境变量为 amd64。 构建 amd64 镜像,并以后台模式运行容器。

  4. 停止和删除:

    docker-compose down

    这会停止并删除容器和网络。

重要注意事项:

  • 环境变量: 使用 ARCH=${ARCH:-arm64} 这种语法可以让你在构建时通过环境变量来指定架构,如果没有设置环境变量,则使用默认值 arm64
  • CMD 覆盖: docker-compose.yml 文件中的 command 字段会完全覆盖 Dockerfile 中的 CMD 指令。 确保你在这里指定了你想要使用的所有参数。 如果你希望沿用 Dockerfile 里的 CMD,在compose 文件里不要添加 command 这一行
  • Dockerfile 位置: 确保 docker-compose.yml 文件与 Dockerfile 在同一个目录下,或者在 docker-compose.yml 中正确指定 dockerfile 的路径。
  • 网络: 如果你的 NeverIdle 应用需要访问网络,你可能需要在 docker-compose.yml 文件中配置网络设置。
  • Volumes: 如果你需要将主机上的目录挂载到容器中,你可以在 docker-compose.yml 中配置 volumes

示例使用场景:

  • 默认 ARM64 运行: 直接运行 docker-compose up -d 将构建 ARM64 镜像并使用 docker-compose.yml 中指定的 command 参数。
  • 指定 AMD64 运行,并使用不同的参数:

    ARCH=amd64 docker-compose up -d

    修改 docker-compose.yml 中的 command 行来设置不同的参数,然后运行 docker-compose up -d

通过这种方式,你可以灵活地使用 docker-compose 来管理 NeverIdle 的部署,并根据需要轻松切换架构和配置。

最后修改:2025 年 07 月 14 日
如果觉得我的文章对你有用,请随