如何处理 write/read 对 docker 卷的访问?

How to handle write/read access to docker volumes?

我很难 link 将 2 个容器放在一起,并被建议开始使用 docker-compose。 所以我构建了以下 docker-compose 文件:

version: '2'
services:
  db:
    image: mysql:latest
    volumes:
      - "./.data/db:/var/lib/mysql"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: my-pass
      MYSQL_DATABASE: prestashop
      MYSQL_USER: my-shop
      MYSQL_PASSWORD: my-pass

  prestashop:
    depends_on:
      - db
    image: prestashop/prestashop:latest
    volumes:
      - "./.data/themes:/var/www/html/themes"
      - "./.data/modules:/var/www/html/modules"
      - "./.data/override:/var/www/html/override"
    links:
      - db
    ports:
      - "10083:80"
    restart: always
    environment:
      DB_SERVER: db
      DB_NAME: prestashop
      DB_USER: my-shop
      DB_PASSWD: my-pass

这非常有效,如果我通过反向 nginx 代理访问该页面,我会得到初始安装向导。

但是如果我添加持久数据卷:

volumes:
  - "./.data/themes:/var/www/html/themes"
  - "./.data/modules:/var/www/html/modules"
  - "./.data/override:/var/www/html/override"

向导会抱怨许多 read/write 访问。 这是为什么?我猜内部卷确实已经有正确的 chmod 了吗? 所以我认为这只是一个同步问题。 但我尝试 chmod 或 chown .data 文件夹,但没有成功

我解决了这个问题。 在 docker-compose up -d 之后,我确实使用 docker cp[= 将内部文件夹模块、主题和覆盖复制到主机18=]

因为 Prestashop 会检查是否所有文件都可用。

复制后即可运行prestashop安装程序。