簡體   English   中英

如何在現有的 WordPress git 存儲庫中配置新的 docker-compose.yml 文件?

[英]How do I configure a new docker-compose.yml file in an existing WordPress git repository?

我有一個 WordPress git 存儲庫,我想添加一個 docker-compose.yml。

/wp-admin
/wp-content
/wp-includes
README.md
composer.json
composer.lock
index.php
license.txt
readme.html
wp-activate.php
wp-blog-header.php
wp-comments-post.php
wp-config.php
wp-cron.php
wp-links-opml.php
wp-load.php
wp-login.php
wp-mail.php
wp-settings.php
wp-signup.php
wp-trackback.php
xmlrpc.php

我熟悉使用 docker-compose.yml 文件在本地運行 WordPress。 我目前正在使用來自https://docs.docker.com/samples/wordpress/的樣本:

version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data: {}
  wordpress_data: {}

如何將 docker-compose.yml 文件添加到現有存儲庫,並將存儲庫的 /wp-content 目錄的內容映射到 WordPress 容器中運行的 /wp-content 目錄?

您不應該將核心 wordpress 文件提交到您的存儲庫。

每次docker-compose up -d項目時,docker 都會使用 docker 桌面應用程序中的當前/最新圖像。

    image: wordpress:latest

因此,直接映射到wordpress_data:/var/www/html是毫無意義的,並且在運行 wordpress 更新時向其中添加文件是危險的。

您的db_data:/var/lib/mysql也是如此,因為每次 docker 上下組合時都會重置。 數據庫不會以這種方式持久化,這意味着每次 docker 關閉時,您的數據庫都會重置。

解決問題的最佳方法是在本地提取您的存儲庫,刪除所有核心 wordpress 文件,然后將wp-content子文件夾移動到存儲庫的根目錄,如下所示...

在此處輸入圖像描述

  1. 在此處包含您的docker-compose.yml
  2. 在此處添加一個.gitignore文件也包含此文件以從您的回購中排除繁重的東西......
/db
/plugins
/uploads
  1. 添加包含此內容的uploads.ini文件以允許本地上傳...
file_uploads = On
memory_limit = 2000M
upload_max_filesize = 2000M
post_max_size = 2000M
max_execution_time = 600
  1. 最后添加一個空的db文件夾。 (這是可選的,因為我們的docker-compose.yml將創建一個,如果它不存在)

現在讓您的docker-compose.yml正確使用上面重新排列的所有內容......

version: '3.9'

networks:
  wordpress:
    ipam:
      config:
        - subnet: 172.25.0.0/16

services:

  # here is our mysql database
  db:
    image: mysql:5.7
    volumes:
      - ./db:/var/lib/mysql:delegated
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wordpress

  # here is our wordpress server
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      # our persistent local data mapping
      - ./themes:/var/www/html/wp-content/themes
      - ./plugins:/var/www/html/wp-content/plugins
      - ./uploads:/var/www/html/wp-content/uploads
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    ports:
      - "80:80"
    restart: always
    networks:
      - wordpress
    environment:

      # our local dev environment
      WORDPRESS_DEBUG: 1

      # docker wp config settings
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_TABLE_PREFIX: wp_
      WORDPRESS_AUTH_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
      WORDPRESS_SECURE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
      WORDPRESS_LOGGED_IN_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
      WORDPRESS_NONCE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
      WORDPRESS_SECURE_AUTH_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
      WORDPRESS_LOGGED_IN_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
      WORDPRESS_NONCE_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb

      # our local dev environment
      WORDPRESS_CONFIG_EXTRA: |

        /* development parameters */
        define('WP_CACHE', false);
        define('ENVIRONMENT', 'local');

        /* configure mail server */
        define('WORDPRESS_SMTP_AUTH', false);
        define('WORDPRESS_SMTP_SECURE', '');
        define('WORDPRESS_SMTP_HOST', 'mailhog');
        define('WORDPRESS_SMTP_PORT', '1025');
        define('WORDPRESS_SMTP_USERNAME', null);
        define('WORDPRESS_SMTP_PASSWORD', null);
        define('WORDPRESS_SMTP_FROM', 'no-reply@yoursitedomain.com');
        define('WORDPRESS_SMTP_FROM_NAME', 'Your Site Title');

        if(!defined('WP_HOME')) {
          /* force our home url */
          define('WP_HOME', 'http://localhost');
          define('WP_SITEURL', WP_HOME);
        }


  # here is our mail hog server
  mailhog:
    image: mailhog/mailhog:latest
    ports:
      - "8025:8025"
    networks:
      - wordpress

要使mailhog工作並從您的本地 wordpress 環境接收傳出郵件,您需要將其添加到您的functions.php中。php ...

// add the action
add_action('wp_mail_failed', 'action_wp_mail_failed', 10, 1);

// configure PHPMailer to send through SMTP
add_action('phpmailer_init', function ($phpmailer) {

    $phpmailer->isSMTP();
    // host details
    $phpmailer->SMTPAuth = WORDPRESS_SMTP_AUTH;
    $phpmailer->SMTPSecure = WORDPRESS_SMTP_SECURE;
    $phpmailer->SMTPAutoTLS = false;
    $phpmailer->Host = WORDPRESS_SMTP_HOST;
    $phpmailer->Port = WORDPRESS_SMTP_PORT;
    // from details
    $phpmailer->From = WORDPRESS_SMTP_FROM;
    $phpmailer->FromName = WORDPRESS_SMTP_FROM_NAME;
    // login details
    $phpmailer->Username = WORDPRESS_SMTP_USERNAME;
    $phpmailer->Password = WORDPRESS_SMTP_PASSWORD;

});

現在下面的這些網址將起作用......

所以每次你在這個項目上docker-compose downdocker-compose up -d時,你的環境都會在你離開的地方啟動。

現在提交您的存儲庫,它現在不包括 wordpress 核心文件,允許您通過 docker 桌面應用程序安全地管理 wordpress 更新。

dbpluginuploads將是本地的持久數據,但這不會提交到您的 repo,因為我們使用.gitignore文件將它們排除在外。 因此,請確保備份這些內容以防萬一您的機器死機。 將這些提交到存儲庫是不好的做法,因為它們的文件大小非常大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM