wordpress - 我如何查看不继续运行的 docker 容器正在做什么/试图做什么?
问题描述
我正在尝试使用WordPress 本地开发环境,它设置了一堆 docker 容器(而且我是 Docker 新手)。其中之一是 WordPress CLI,我认为它正在运行一些脚本来进行一些配置,但是那个特定的容器不会继续运行(我相信这是故意的)。我猜它正在运行的脚本失败了,这是由于一些配置错误而发生的,但我不知道如何判断它在执行时正在做什么(它正在运行什么脚本,设置了哪些环境变量等...)。
有没有办法以某种方式“追踪”容器试图做什么?
$docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpressdevelop/phpunit latest 8ebb6f73d762 2 days ago 732MB
wordpress latest 6c2c086d9173 2 days ago 554MB
wordpress <none> 408627ce79b1 2 days ago 551MB
composer latest ff854871a595 9 days ago 173MB
wordpress cli ee6de7f71aa0 9 days ago 137MB // I want to see what this does
mariadb latest e27cf5bc24fe 12 days ago 401MB
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19007b991e08 wordpress "docker-entrypoint.s…" 48 minutes ago Up 48 minutes 0.0.0.0:8888->80/tcp e6bc9159b910bda3d9b0dae2e230eabd_wordpress_1
26ac5c7ec782 wordpress "docker-entrypoint.s…" 48 minutes ago Up 48 minutes 0.0.0.0:8889->80/tcp e6bc9159b910bda3d9b0dae2e230eabd_tests-wordpress_1
8ae0a4dc4f77 mariadb "docker-entrypoint.s…" 48 minutes ago Up 48 minutes 0.0.0.0:54989->3306/tcp e6bc9159b910bda3d9b0dae2e230eabd_mysql_1
这是在运行 Docker Desktop、Docker 版本 20.10.5 的 MacOS 11.2.2 上。
我不确定它是否相关,但为了完整起见,我在下面包含了 wp-env 生成的 docker-compose.yml。
谢谢!
背景
这曾经只是工作,但我认为我在我的环境中破坏了一些东西,并试图诊断它。我最初在 WordPress StackExchange 上询问过这个问题,但后来深入挖掘。Docker compose 步骤因此失败:
... ⠏ 配置 WordPress.Creating e6bc9159b910bda3d9b0dae2e230eabd_cli_run ... 完成 ⠹ 配置 WordPress.mysqlcheck:出现错误:1045:访问拒绝用户 'username_here'@'172.19.0.5'(使用密码:YES)尝试连接时
数据库容器保持启动并运行,如果我查看数据库,我看到它已配置为无需密码即可进行 root 连接:
MariaDB [(none)]> select user, host, password from mysql.user;
+-------------+-----------+----------+
| User | Host | Password |
+-------------+-----------+----------+
| mariadb.sys | localhost | |
| root | localhost | |
| root | % | |
+-------------+-----------+----------+
3 rows in set (0.003 sec)
在主 WordPress 容器中,wp-config.php 文件包含这个小片段:
...
// a helper function to lookup "env_FILE", "env", then fallback
function getenv_docker($env, $default) {
if ($fileEnv = getenv($env . '_FILE')) {
return file_get_contents($fileEnv);
}
else if ($val = getenv($env)) {
return $val;
}
else {
return $default;
}
}
...
/** MySQL database username */
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'username_here') );
/** MySQL database password */
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'password_here') )
鉴于错误消息,我假设 CLI 容器正在尝试执行类似的操作,但未设置环境变量WORDPRESS_*
,因此它使用的是默认值,这...不起作用。我认为我需要做的是追踪在运行过程中早期未能设置这些变量的东西。
docker-compose.yml
version: '3.7'
services:
mysql:
image: mariadb
ports:
- '3306'
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'mysql:/var/lib/mysql'
wordpress:
build: .
depends_on:
- mysql
image: wordpress
ports:
- '${WP_ENV_PORT:-8888}:80'
environment:
WORDPRESS_DB_NAME: wordpress
volumes: &ref_0
- 'wordpress:/var/www/html'
- '/Users/cwr/src/cwra/foo:/var/www/html/wp-content/plugins/foo'
tests-wordpress:
depends_on:
- mysql
image: wordpress
ports:
- '${WP_ENV_TESTS_PORT:-8889}:80'
environment:
WORDPRESS_DB_NAME: tests-wordpress
volumes: &ref_1
- 'tests-wordpress:/var/www/html'
- '/Users/cwr/src/cwra/foo:/var/www/html/wp-content/plugins/foo'
cli:
depends_on:
- wordpress
image: 'wordpress:cli'
volumes: *ref_0
user: '33:33'
tests-cli:
depends_on:
- tests-wordpress
image: 'wordpress:cli'
volumes: *ref_1
user: '33:33'
composer:
image: composer
volumes:
- '/Users/cwr/src/cwra/foo:/app'
phpunit:
image: 'wordpressdevelop/phpunit:latest'
depends_on:
- tests-wordpress
volumes:
- 'tests-wordpress:/var/www/html'
- '/Users/cwr/src/cwra/foo:/var/www/html/wp-content/plugins/foo'
- 'phpunit-uploads:/var/www/html/wp-content/uploads'
environment:
LOCAL_DIR: html
WP_PHPUNIT__TESTS_CONFIG: /var/www/html/phpunit-wp-config.php
volumes:
wordpress: {}
tests-wordpress: {}
mysql: {}
phpunit-uploads: {}
解决方案
docker logs
可以在这里为您提供帮助,因为它还显示退出容器的日志(Source)。
更新:ACC。对于 OP,实际问题仍不清楚,但从新的 docker 和节点安装开始就可以解决问题并让 wp-env 运行。
推荐阅读
- html - 如果使用 CSS 为空,则动态隐藏 div 字段
- python - 包导入在 Python 交互窗口(在 VSCode 中)中有效,但在终端运行的 python 中无效?
- reactjs - 无法分配 RefObject
到 RefObject 实例 - timestamp - 批量加载时间戳格式
- lua - 即使玩家生命值 < 0,也不会调用 Roblox 死亡事件
- java - 如何在 Intellij Idea CE 2020.1 build 201.6668.60 中触发插件的自动重新加载
- python - pandas Series.tolist() 中的 NaN 的行为与列表中的 NaN 不同
- f# - F#:以编程方式操作标识符
- awk - 我怎样才能把星星的数量作为awk中的数量?
- c++ - Vector 与使用 push_back() 的函数大小相同