[英]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
子文件夾移動到存儲庫的根目錄,如下所示...
docker-compose.yml
。.gitignore
文件也包含此文件以從您的回購中排除繁重的東西....../db
/plugins
/uploads
uploads.ini
文件以允許本地上傳...file_uploads = On
memory_limit = 2000M
upload_max_filesize = 2000M
post_max_size = 2000M
max_execution_time = 600
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 down
和docker-compose up -d
時,你的環境都會在你離開的地方啟動。
現在提交您的存儲庫,它現在不包括 wordpress 核心文件,允許您通過 docker 桌面應用程序安全地管理 wordpress 更新。
db
、 plugin
和uploads
將是本地的持久數據,但這不會提交到您的 repo,因為我們使用.gitignore
文件將它們排除在外。 因此,請確保備份這些內容以防萬一您的機器死機。 將這些提交到存儲庫是不好的做法,因為它們的文件大小非常大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.