wordpress的dockercompose部署方式

发布时间 2023-03-31 14:22:45作者: zxh263
version: '3.1'

services:

  wordpressastra:
    image: wordpress
    restart: always
    ports:
      - 8082:80
    environment:
      WORDPRESS_DB_HOST: dbastra
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpressastra:/var/www/astra/html

  dbastra:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - dbastra:/var/lib/astra/mysql

volumes:
  wordpressastra:
  dbastra:

 

 
 
 
 
 

这是一个用于运行WordPress和MySQL数据库的Docker Compose文件。

"wordpressastra"服务定义了一个带有Astra主题的WordPress镜像。它被配置为始终重启,并设置在端口8082上运行。它还定义了用于数据库连接的环境变量,包括主机、用户、密码和数据库名称。Volumes部分指定了一个持久化卷,用于存储WordPress文件。

"dbastra"服务定义了一个MySQL 5.7版本的镜像。它也被设置为始终重启,并定义了数据库的环境变量,包括数据库名称、用户、密码和一个随机的root密码。Volumes部分指定了一个持久化卷,用于存储MySQL数据。

总的来说,这个Docker Compose文件提供了一个简单、便携的方式来运行带有Astra主题的WordPress和MySQL数据库。

 
 
如果把数据库目录 挂在到宿主机 /app/mysql/data
 
 
 

如果要将数据库目录挂载到宿主机的/app/mysql/data目录,只需要修改Docker Compose文件的dbastra服务的volumes部分。以下是修改后的Docker Compose文件:

version: '3.1'

services:

  wordpressastra:
    image: wordpress
    restart: always
    ports:
      - 8082:80
    environment:
      WORDPRESS_DB_HOST: dbastra
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpressastra:/var/www/astra/html

  dbastra:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - /app/mysql/data:/var/lib/mysql

volumes:
  wordpressastra:

 

dbastra服务的volumes部分,我们将/var/lib/mysql目录替换为宿主机上的/app/mysql/data目录。这样就会将MySQL数据存储在宿主机上的/app/mysql/data目录中,而不是Docker容器中。

 
同样,如何把/var/www/astra/html挂在到宿主机 /app/wordpress
 
 
 

如果要将/var/www/astra/html目录挂载到宿主机的/app/wordpress目录,只需要修改Docker Compose文件的wordpressastra服务的volumes部分。以下是修改后的Docker Compose文件:

 

version: '3.1'

services:

  wordpressastra:
    image: wordpress
    restart: always
    ports:
      - 8082:80
    environment:
      WORDPRESS_DB_HOST: dbastra
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - /app/wordpress:/var/www/astra/html

  dbastra:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - /app/mysql/data:/var/lib/mysql

volumes:
  wordpressastra:

 

wordpressastra服务的volumes部分,我们将/var/www/astra/html目录替换为宿主机上的/app/wordpress目录。这样就会将WordPress文件存储在宿主机上的/app/wordpress目录中,而不是Docker容器中。

 
 
volumes: wordpressastra: 这个节点还需要保留?
 
 
 

是的,volumes节点中的wordpressastra定义了一个Docker卷,用于存储WordPress的数据。这个卷是在wordpressastra服务中定义的,并被映射到/var/www/astra/html目录。即使我们将此目录挂载到宿主机,我们仍然需要定义一个Docker卷来存储WordPress数据。因此,即使将目录挂载到宿主机,我们仍然需要保留volumes节点中的wordpressastra定义。

 
 
volumes: dbastra: 这个为何不需要加
 
 
 

你提到的volumes节点中的dbastra定义了一个Docker卷,用于存储MySQL的数据。这个卷是在dbastra服务中定义的,并被映射到/var/lib/mysql目录。我们可以选择将此目录挂载到宿主机上的某个目录,也可以不挂载,让Docker容器来管理MySQL数据。如果我们选择不挂载,那么该节点确实不需要加。在这种情况下,Docker将使用其默认机制来创建和管理数据卷。

但是,如果我们希望将MySQL数据存储在宿主机上的某个目录中,我们需要在volumes节点中定义一个Docker卷,就像我之前所示的那样。在这种情况下,我们需要指定一个宿主机目录,它将被用于存储MySQL数据。