我已经在我的本地机器中设置了虚拟机共享文件夹。我的 Docker 撰写文件中有以下代码用于 Wordpress 服务。但不确定这些卷在这里是如何工作的。你能解释一下吗?
version: '2'
services:
database:
image: mysql:5.6
volumes:
- ./mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
restart: unless-stopped
wordpress:
image: wordpress:4.9.6
ports:
- 49160:80
links:
- database:mysql
volumes:
- ./wordpress:/var/www/html/wp-content
environment:
WORDPRESS_DB_PASSWORD: password
restart: unless-stopped
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- database:db
ports:
- 8080:80
上面这行代码是否意味着,是否需要在我当前运行的 docker-compsose.yml 文件中创建一个 WordPress 文件夹?
或者它与我在虚拟机中的共享文件夹有什么关系?
最佳答案
基本上卷是 Docker 的工具,因此它可以保留数据。 Docker 容器通常设计为无状态的,但如果您需要在运行之间保留状态/信息,那就是卷的用武之地。
您可以通过以下方式创建未命名卷:
volumes:
- /var/www/html/wp-content
这会将您的 wp-content 文件夹保留在内部卷存储中,而无需特定名称。
第二种方法是给它一个名字,使它成为一个命名卷:
volumes:
- mywp:/var/www/html/wp-content
最后一种类型,也是您正在做的,称为卷绑定(bind)。这基本上将文件夹的内容绑定(bind)/挂载到容器中的主机上。因此,如果您在任一位置更改文件,它将保存在另一个位置。
volumes:
- ./wordpress:/var/www/html/wp-content
为了使用您的卷绑定(bind),您需要在运行 docker-compose.yaml 的文件夹(通常是您的根文件夹)中创建文件夹“wordpress”。之后,当您的安装在容器内发生变化时,它也会在绑定(bind)时发生变化,反之亦然。
编辑:在您的特定情况下,以下应该有效:
version: '3.2'
services:
database:
image: mysql:5.6
volumes:
- ./mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
restart: unless-stopped
wordpress:
image: wordpress:4.9.6
ports:
- 49160:80
links:
- database:mysql
volumes:
- type: bind
source: ./wordpress
target: /var/www/html/wp-content
environment:
WORDPRESS_DB_PASSWORD: password
restart: unless-stopped
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- database:db
ports:
- 8080:80
关于wordpress - 通过docker compose运行时如何将wordpress wp-content文件夹存储在本地机器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267836/