我正在尝试在 docker-compose.yml 文件中复制此docker命令
docker run --name rails -d -p 80:3000 -v "$PWD"/app:/www -w /www -ti rails
我的 docker-compose.yml 档案:
rails:
image: rails
container_name: rails
ports:
- 80:3000
volumes:
- ./app:/wwww
当我正在做 docker-compose up -d 时,容器已创建,但它没有策略 .
当我将 tty: true 添加到我的docker docker-compose.yml 文件时,容器启动良好但我的卷未安装 .
如何在 docker-compose.yml 中激动地复制我的docker命令?
2 回答
有一些方法可以解决您的问题 .
Solution 1: 如果要在docker-compose.yml中使用
rails
图像,则需要为其设置命令和工作目录每次运行
docker-compose up
时,这将从rails图像创建一个新容器 .Solution 2: 将docker-compose.yml移动到与Gemfile相同的目录,并在该目录中创建
Dockerfile
,以便提前构建一个docker容器(以避免每次都运行bundle install
)为简单起见,我在这里使用
rails:onbuild
(关于rails:onbuild
和rails:<version>
之间的区别,请参阅documentation) .之后,将docker-compose.yml修改为
运行
docker-compose up
,这应该工作!如果修改了Gemfile,则可能还需要在运行
docker-compose up
之前通过docker-compose build
重建容器 .感谢您的回答 . 它帮助我找到了解决方案 .
这实际上是一个卷问题 . 我想用目录 /www 挂载卷 . 但这是不可能的 . 所以我使用了rails图像默认使用的目录: /usr/src/app
现在我的 docker-compose up -d 命令有效