wordpress – 如何在docker-compose.yml中运行wp cli

weixin_38053139 2019-09-12 01:22:25
刚开始在这里的Docker 所以我在docker-compose.yml中得到了这个 version: '3.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 wordpress-cli: depends_on: - db - wordpress image: wordpress:cli command: wp core install --path="/var/www/html" --url=localhost --title="Local WordPress By Docker" --admin_user=admin --admin_password=secret --admin_email=foo@bar.com volumes: db_data: 所以我想运行wp核心安装,以便我不必经历手动设置我的测试wordpress站点的过程. 但是,当我运行docker-compose时,这似乎不起作用,我在控制台上出现了这个错误 我在这里错过了什么?任何人都可以帮助我实现自动设置wordpress安装的目标吗? 提前致谢
...全文
151 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38065414 2019-09-12
  • 打赏
  • 举报
回复
那么有几个问题.第一个是那两个容器(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.

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧