如何处理 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安装程序。
我很难 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安装程序。