我可以访问 运行 NGINX 容器实例的文件系统吗?

Can I access the filesystem of a running NGINX container instance?

快速总结: 我有一个 ECS 任务定义,它启动了一个 NGINX(最新)实例和一个 PHP (php:7-fpm) 实例。我已经为 site.conf 文件以及我希望 NGINX 服务的 PHP 项目设置了单独的卷。

ECS 服务启动此任务没有问题。我得到的源代码在 "wrapper" 文件夹中。我们暂时称它为 "wrap"。 "wrap" 内有一些配置文件、各种其他 php 文件和另一个名为 public 的文件夹。 public 里面是 index.php.

我的 site.conf 文件如下所示:

server {
root /wrap/public;
listen 80;
index index.php;
server_name localhost;
error_log  /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;


location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass php:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}
}

我的 ECS 任务定义挂载点如下所示:

mountPoints: [
    {
      "containerPath": "/etc/nginx/conf.d/",
      "sourceVolume": "config",
      "readOnly": false
    },
    {
      "containerPath": "/usr/local/nginx/",
      "sourceVolume": "webdata",
      "readOnly": false
    }
 ]

ECS任务定义卷是这样的:

"volumes": [
{
  "host": {
    "sourcePath": "/ecs/config"
  },
  "name": "config"
},
{
  "host": {
    "sourcePath": "/ecs/webdata"
  },
  "name": "webdata"
},
{
  "host": {
    "sourcePath": "/ecs/debug"
  },
  "name": "debug"
}

],

ECS 主机上的 webdata 文件夹包含 "wrap" 文件夹。

出了点问题,因为 NGINX 一直给我一个 404 错误。我已经尝试 运行 Docker 附加到 NGINX 容器上,但是 - 我不确定我要附加到容器上的哪个进程。我不能 运行 LS、PWD 或任何命令 - 我假设它只是一个 STDout 进程?

如何附加到 运行ning NGINX 实例以查看文件系统来调试我的问题?或者,我的 post 中有什么东西会突然出现在任何人面前吗?

TIA!

你可以执行

docker exec -it $instance_name /bin/bash

使用docker ps查找实例名