是否可为单个Docker容器配置bind mount实现本地项目文件挂载?
Ruby项目Docker绑定挂载配置方案
基于docker-compose的配置(推荐,符合你的使用习惯)
直接在项目根目录新建docker-compose.yml,配置内容如下:
version: '3.8' services: ruby-app: build: . volumes: # 核心绑定挂载配置:本地项目目录同步到容器工作目录 - ./:/usr/src/app # 可选优化:单独挂载bundler依赖缓存,避免重复下载依赖 - bundle_cache:/usr/local/bundle # 声明依赖缓存卷 volumes: bundle_cache:
使用方法
- 首次使用只需要构建一次镜像:
docker-compose build,后续修改代码无需重复构建 - 运行任意路径下的脚本时,直接在启动命令中指定脚本路径即可覆盖Dockerfile默认的CMD,例如运行项目下
./utils/export.rb:docker-compose run --rm ruby-app ruby ./utils/export.rb - 如果固定运行某一个脚本,可直接在
docker-compose.yml的ruby-app服务下新增command: ruby ./your/target/path.rb配置,后续直接执行docker-compose up即可启动。
简化版docker命令实现(无需compose)
如果不想用docker-compose,可直接用以下短命令实现绑定挂载运行任意脚本:
docker run --rm -v "$(pwd):/usr/src/app" 你的镜像名称 ruby ./path/to/your/script.rb
注意事项
如果修改了Gemfile或Gemfile.lock,只需要执行docker-compose run --rm ruby-app bundle install更新依赖即可,无需重新构建镜像。
内容的提问来源于stack exchange,提问作者periwinkle
相关产品推荐
相关产品推荐

