通过docker compose运行时如何在本地计算机中存储wordpress wp-content文件夹

时间:2018-07-10 14:27:35

标签: wordpress docker docker-compose

我在本地计算机上都设置了虚拟机共享文件夹。我在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文件夹?

还是与虚拟机中的共享文件夹有关?

2 个答案:

答案 0 :(得分:1)

基本上,卷是Docker的工具,因此它可以保留数据。 Docker容器通常被设计为无状态的,但是如果您需要在运行之间保留状态/信息,那就是卷的所在。

您可以通过以下方式创建未命名的卷:

volumes:
  - /var/www/html/wp-content

这会将您的wp-content文件夹保留在内部卷存储中,而无需使用特定名称。

第二种方法是给它命名,使其成为一个命名卷:

volumes:
  - mywp:/var/www/html/wp-content

最后一种类型(也就是您正在做的)称为卷绑定。这基本上是将主机上文件夹的内容绑定/装入容器中。因此,如果您在任一位置更改文件,该文件都会保存在另一位置。

volumes:
  - ./wordpress:/var/www/html/wp-content

为了使用您的卷绑定,您将需要在运行docker-compose.yaml的文件夹(通常是根文件夹)中创建文件夹“ wordpress”。之后,当您在容器内更改安装时,绑定上的安装也会更改,反之亦然。

编辑:在您的特定情况下,以下方法应该起作用:

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

答案 1 :(得分:0)

docker-compose.yml文件中添加卷将使您能够将内容从本地文件系统“装载”到正在运行的容器中。

因此,关于以下行:

volumes:
  - ./wordpress:/var/www/html/wp-content

这意味着本地wordpress目录中的所有内容都将放置在容器内的/var/www/html/wp-content目录中。这很有用,因为它允许您在本地开发主题和插件,然后将它们自动注入到正在运行的容器中。

为避免混淆,我建议将wordpress重命名为其他名称,因此很明显,您仅装载WordPress内容,而不装载核心文件本身。

如果您需要其他参考,这里我也有类似的设置:

https://github.com/alexmacarthur/wp-skateboard