wordpress运行c语言,wordpress – 如何在docker-compose.yml中运行wp c...

那么有几个问题.第一个是那两个容器(wordpress和wordpress-cli)不共享卷.因此,虽然wordpress已准备好wordpress安装,但wordpress-cli却没有.

因此,您可以向两个容器添加卷,然后wordpress-cli将找到wordpress安装.

然后还有第二个问题:wordpress:最新和wordpress:cli图像都使用用户www-data运行,但问题是各个www-data用户有不同的用户ID:

$docker run --rm wordpress:latest grep www-data /etc/passwd

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

$docker run --rm wordpress:cli grep www-data /etc/passwd

www-data:x:82:82:Linux User,,,:/home/www-data:/bin/false

看来它们在这里并不完全兼容.因此,如果您使用共享卷,则必须确保它们都使用相同的用户ID.我解决了这个问题,让wordpress:cli与用户xfs一起运行,用户ID也是用户ID 33.

最后一个问题是您的容器彼此依赖. WordPress需要一个正在运行的MySQL实例,而wordpress-cli也需要MySQL和Wordpress准备就绪.为了确保MySQL已经为wordpress cli安装做好准备,你可以使用像“wait-for-it”这样的东西,或者在一个简单的例子中你可以等待几秒然后再尝试一下.

我测试了所有这些更改,并提出了以下docker-compose.yml.我已经注释了我用“vstm”所做的所有更改:

version: "2.3"

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

ports:

- 8000:80

restart: always

environment:

WORDPRESS_DB_HOST: db:3306

WORDPRESS_DB_NAME: wordpress

WORDPRESS_DB_USER: wordpress

WORDPRESS_DB_PASSWORD: wordpress

WORDPRESS_TABLE_PREFIX: "wp_"

WORDPRESS_DEBUG: 1

# vstm: add shared volume

volumes:

- wp_data:/var/www/html

wordpress-cli:

depends_on:

- db

- wordpress

image: wordpress:cli

# vstm: This is required to run wordpress-cli with the same

# user-id as wordpress. This way there are no permission problems

# when running the cli

user: xfs

# vstm: The sleep 10 is required so that the command is run after

# mysql is initialized. Depending on your machine this might take

# longer or it can go faster.

command: >

/bin/sh -c '

sleep 10;

wp core install --path="/var/www/html" --url="http://localhost:8000" --title="Local WordPress By Docker" --admin_user=admin --admin_password=secret --admin_email=foo@bar.com

'

# vstm: add shared volume

volumes:

- wp_data:/var/www/html

volumes:

db_data:

# vstm: add shared volume

wp_data:

它使用docker-volume,但您也可以将其映射到文件系统.取决于您打算如何使用docker-compose.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值