- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从这个链接https://hub.docker.com/_/wordpress得到了一个像这样的docker-compose.yml文件。
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
但是该卷未安装在wordpress文件夹上,并且如果我删除“wordpress”以将该卷安装在本地文件夹上,它将被安装,但它是只读的。我没有Dockerfile,我只是使用默认镜像,这就是问题所在吗?
最佳答案
我一直在使用docker进行wordpress,这是我的工作流程。(在Mac上)
创建一个项目文件夹,并为此添加一个docker-compose.yml
文件。
version: '3.7'
services:
# here is our mysql container
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
# here is our wordpress container
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
# our persistent local data re routing
- .:/var/www/html/wp-content/themes/testing:delegated
- ./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
environment:
# our local dev environment
WORDPRESS_DEBUG: 1
DEVELOPMENT: 1
# docker wp config settings
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
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
WORDPRESS_CONFIG_EXTRA: |
/* Development parameters */
define('WP_CACHE', false);
define('ENVIRONMENT', 'local');
/* Configure mailhog 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', 'whoever@example.com');
define('WORDPRESS_SMTP_FROM_NAME', 'Whoever');
/* other wp-config defines here */
# here is our mailhog container
mailhog:
image: mailhog/mailhog:latest
ports:
- "8025:8025"
然后在此项目文件夹中运行此终端命令(运行docker app)。
docker-compose up -d
..and bam,您将在
http://localhost/
上拥有一个wordpress网站
docker-compose.yml
,因此您将拥有。
uploads.ini
uploads.ini
文件替换
uploads.ini
文件夹。
file_uploads = On
memory_limit = 2000M
upload_max_filesize = 2000M
post_max_size = 2000M
max_execution_time = 600
因此,您的项目(主题)文件夹应如下所示。
docker-compose down
下次您在此项目上运行此命令时。
docker-compose up -d
..您以前所有的数据库,插件和上载都将完全保留,对于wordpress本地开发人员来说真是太棒了!
.gitignore
文件排除了这些文件/文件夹。
/vendor
/uploads
/db
/dist
/node_modules
/plugins
值得在硬盘驱动器故障或其他情况下为
/db
,
/plugins
和
/uploads
文件夹设置备用云备份解决方案,例如Google驱动器。
staging
和
production
在此项目的IDE设置中,您可能希望将某些文件和文件夹排除在部署到
staging
和
production
服务器环境之外,这是我通常所排除的。
/Users/joshmoto/Sites/demo/db
/Users/joshmoto/Sites/demo/node_modules
/Users/joshmoto/Sites/demo/src
/Users/joshmoto/Sites/demo/uploads
/Users/joshmoto/Sites/demo/composer.json
/Users/joshmoto/Sites/demo/composer.lock
/Users/joshmoto/Sites/demo/docker-compose.yml
/Users/joshmoto/Sites/demo/package-lock.json
/Users/joshmoto/Sites/demo/package.json
/Users/joshmoto/Sites/demo/uploads.ini
/Users/joshmoto/Sites/demo/webpack.mix.js
/Users/joshmoto/Sites/demo/plugins
/Users/joshmoto/Sites/demo/.gitignore
/Users/joshmoto/Sites/demo/vendor
/plugins
我通过通过cPanel或wordpress仪表板上载进行手动管理,因为在同步到远程时索引非常繁重。 /vendors
是由 Composer 生成的,并且存在相同的问题,索引很疯狂,因此最好手动将其压缩并通过cPanel或您使用的任何服务器管理员上载。 wp-content
文件夹可能会遇到一些权限问题。这很容易解决。当您的项目在docker中启动并运行时,在项目中运行以下docker compose命令可更改
wp-content
文件夹的权限。
docker ps
返回结果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4052536e574a wordpress:latest "docker-entrypoint.s…" 1 hour ago Up 1 hour 0.0.0.0:80->80/tcp demo_wordpress_1
b0fbb0a8f9e6 mysql:5.7 "docker-entrypoint.s…" 1 hour ago Up 1 hour 0.0.0.0:3306->3306/tcp, 33060/tcp demo_db_1
769262e584e7 mailhog/mailhog:latest "MailHog" 1 hour ago Up 1 hour 1025/tcp, 0.0.0.0:8025->8025/tcp demo_mailhog_1
复制并记下
wordpress:latest
容器ID,在此示例中,我的容器ID为..
4052536e574a
现在,使用此wordpress容器ID运行此命令以执行此容器目录中的内容。
docker exec -it 4052536e574a /bin/bash
返回结果
root@4052536e574a:/var/www/html#
现在我们在容器的根目录中,您现在可以运行此命令,该命令将递归地更改
wp-content
上的权限,并解决本地wordpress仪表板中的上载权限问题。
chown -R www-data:www-data wp-content
为了使这些更改生效,您可能必须在项目文件夹上运行
docker-compose down
和
docker-compose up -d
命令,但我认为您也不需要。
sudo nano /etc/hosts
然后,在
WriteOut
之前,通过终端和
Exit
将自定义网址添加到主机文件中。
127.0.0.1 local.demo.com
现在,重定向掩码已保存在主机中,您需要将其添加到
docker-compose.yml
下的
/* other wp-config defines here */
中。
define('WP_HOME','http://local.demo.com');
define('WP_SITEURL','http://local.demo.com');
不幸的是,您不能使用
https
,而必须使用
http
。
docker-compose down
和
docker-compose up -d
才能使这些新定义的配置在本地
wp-config.php
中运行。
docker-compose.yml
配置中获取任何东西,实际上您只想最初添加这些额外的定义。
wp-config.php
define('ENVIRONMENT', 'staging');
define('WP_DEBUG', true);
define('WP_HOME','https://staging.demo.com');
define('WP_SITEURL','https://staging.demo.com');
生产
wp-config.php
define('ENVIRONMENT', 'production');
define('WP_DEBUG', false);
define('WP_HOME','https://www.demo.com');
define('WP_SITEURL','https://www.demo.com');
docker-compose.yml
示例中,我定义了
image: wordpress:latest
,该代码将获取安装在您的docker应用中的最新wordpress图像。
docker-compose up -d
,则该项目将更新为docker上安装的最新wordpress镜像。
docker-compose.yml
中亲自定义wordpress图像版本,但是如果您不希望某些项目在下一个
docker-compose up -d
项目时使用最新图像,则可以。
docker pull wordpress
而且,您的项目必须使用
docker-compose down
和
docker-compose up -d
才能使用最新的更新,当您首次通过浏览器访问该站点时,有时需要wordpress数据库更新。
关于docker - 为什么将此卷挂载为只读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64473536/
我在不同的硬件上测试 Cassandra 已经有一段时间了。 首先我有 2 个 CPU 和 6 GB RAM 然后我更改为 16 个 CPU 和 16 GB RAM(其中只有 6 GB 可供我的测试使
我只是想从二进制文件中读/写。我一直在关注 this教程,它的工作原理......除了它似乎正在将内容写入 txt 文件。我在测试的时候把文件命名为test.bin,但是记事本可以打开并正常显示,所以
我编写了一些简单的 Java 代码来从文本文件中读取字符串,将它们组合起来,然后将它们写回。 (有关输出没有变化的简化版本,请参见下面的片段) 问题是输入文件和输出文件中的特定字符(- 和 ...)是
我真的很感兴趣——你为什么要放 readln; 从键盘读取一些值到变量后的行?例如, repeat writeln('Make your choise'); read(CH); if (CH = '1
只要程序不允许同时写入存储在模块中的共享数据结构的相同元素,它是线程安全的吗?我知道这是一个菜鸟问题,但在任何地方都找不到明确解决的问题。情况如下: 在程序开始时,数据被初始化并存储在模块级可分配数组
我有一个数据结构,其操作可以归类为读取操作(例如查找)和写入操作(例如插入、删除)。这些操作应该同步,以便: 读操作不能在写操作执行时执行(除非在同一线程上),但是读操作可以与其他读操作并发执行。 在
我在Java套接字编程中有几个问题。 在读取客户端套接字中的输入流时,如果抛出IO异常;那么我们是否需要重新连接服务器套接字/再次初始化客户端套接字? 如果我们关闭输出流,它将关闭客户端套接字吗? 如
我正在尝试从客户端将结构写入带有套接字的服务器。 结构是: typedef struct R { int a; int b; double c; double d; double result[4];
我想知道是否可以通过 Javascript 从/向 Azure Active Directory 广告读取/写入数据。我读到 Azure 上有 REST 服务,但主要问题是生成与之通信的 token
我希望有人能提供完整的工作代码,允许在 Haskell 中执行以下操作: Read a very large sequence (more than 1 billion elements) of 32
我有一个任务是制作考试模拟器。我的意思是,在老师输入某些科目的分数后,学生输入他的名字、姓氏和出生,然后他决定学生是否通过科目。所以,我有一个问题,如何用新行写入文件文本并通过重写该文件来读取(逐行读
我需要编写巨大的文件(超过 100 万行)并将文件发送到另一台机器,我需要使用 Java BufferedReader 一次读取一行。 我使用的是 indetned Json 格式,但结果不太方便,
我在 Android 应用程序中有一个读写操作。在 onCreate 上,将读取文件并将其显示为编辑文本并且可以进行编辑。当按下保存按钮时,数据将被写入 onCreate 上读取的同一文件中。但我得到
我正在编写一个程序,该程序从一个文件读取输入,然后该程序将格式化数据并将其写入另一个文件。 输入文件: Christopher kardaras,10 N Brainard,Naperville,IL
我有一个 SCALA(+ JAVA) 代码,它以一定的速率读写。分析可以告诉我代码中每个方法的执行时间。如何衡量我的程序是否达到了最大效率?为了使我的代码优化,以便它以给定配置可能的最大速度读取。我知
嗨,我想知道如何访问 java/maven 中项目文件夹中的文件,我考虑过使用 src/main/resources,但有人告诉我,写入此目录中的文件是一个坏主意,并且应该只在项目的配置中使用,所以我
我想读\写一个具有以下结构的二进制文件: 该文件由“RECORDS”组成。每个“RECORD”具有以下结构:我将以第一条记录为例 (红色)起始字节:0x5A(始终为 1 字节,固定值 0x5A) (绿
我想制作一个C程序,它将用一些参数来调用;每个参数将代表一个文件名,我想在每个参数中写一些东西。 FILE * h0; h0 = fopen(argv[0],"w"); char buff
我有一个包含团队详细信息的文件。我需要代码来读取文件,并将获胜百分比写入第二个文件。我还需要使用指示的搜索功能来搜索团队的具体信息。该代码未写入百分比文件。当菜单显示时,第一个文件的内容被打印,但代码
我正在使用 read() 和 write() 函数来处理我的类,并且我正在尝试使用一个函数来写入它所读取的内容以及我作为参数给出的前面的内容。 例如,我想给出 10 作为我的程序的参数 int mai
我是一名优秀的程序员,十分优秀!