🤖 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
指令。 这里设置了示例参数,你可以根据你的需要修改。
使用方法:
- 保存为
docker-compose.yml
: 将上面的内容保存到一个名为docker-compose.yml
的文件中,确保与Dockerfile
在同一目录下。 构建和运行(ARM64):
docker-compose up -d
这会构建镜像(如果不存在),然后以后台模式运行容器。 由于yaml文件里设置了
ARCH
的默认值为arm64
,所以可以构建arm64的镜像构建和运行(AMD64):
ARCH=amd64 docker-compose up -d
在构建和运行之前设置
ARCH
环境变量为amd64
。 构建 amd64 镜像,并以后台模式运行容器。停止和删除:
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
的部署,并根据需要轻松切换架构和配置。