我可以在只读卷下安装可写Docker卷吗?

时间:2016-06-17 14:16:58

标签: docker docker-compose

我试图将可写Docker卷挂载为只读卷的子级,但是我收到此错误:

volumes:
  uploads:
    driver: local

services:
  wordpress:
    volumes:
      - /dev/workspace/wp-content/:/var/www/html/wp-content/
      - uploads:/var/www/html/wp-content/uploads 

我正在使用WordPress图片,而我要安装的两个卷是:

  • / var / www / html / wp-content:包含我的开发代码。只读,因为我不想要任何意外的更改。
  • / var / www / html / wp-content / uploads:用户上传的文件。必须是可写的。

快速解决方案是在其他地方移动上传,但我更喜欢Docker解决方案。

我的docker-compose.yml的相关位:

std::map<int/* row */, std::map<int/* col */, QString> > stuff;
int minCol = std::numeric_limits<int>::max();
int maxCol = std::numeric_limits<int>::min();
for (int i = 0; i < selectedIndexes.count(); ++i) {
  QModelIndex current = selectedIndexes[i];
  int col = horizontalHeader()->visualIndex(current.column());
  stuff[current.row()][col] = current.data(Qt::DisplayRole).toString();
  minCol = std::min(minCol, current.column());
  maxCol = std::max(maxCol, current.column());
}

QString displayText;
for (const auto &byRow: stuff) {
  for (int col = minCol; col <= maxCol; ++col) {
    auto i = byRow.second.find(col);
    if (i != byRow.second.end())
      displayText += i->second;
    displayText += col == maxCol ? "\n" : "\t";
  }
}

2 个答案:

答案 0 :(得分:9)

回答我自己的问题:挂载点必须存在于只读卷中,即使它不会被使用。在安装之前,Docker试图在RO卷中创建上传目录。

当我在 / dev / workspace / wp-content / uploads 创建一个空目录时,错误消失了,所有内容都按预期工作。

答案 1 :(得分:6)

是的,一般来说,你可以!以下是只读父路径

的示例
-v $DIR/htdocs:/var/www/html:ro

和另一个装载

-v $DIR/logs:/var/www/html/app/cache:rw

查看更多https://stackoverflow.com/a/37730878/4986182