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

时间:2017-10-31 17:49:00

标签: php docker nginx amazon-ecs

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

ECS服务可以毫无问题地启动此任务。我给出的源代码是一个"包装器"夹。我们称之为"包装"目前。内部"包裹"是一些配置文件,各种其他PHP文件和另一个名为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错误。我试图在NGINX容器上运行Docker附件,但是 - 我不确定我在容器上附加了什么进程。我不能运行LS,或PWD或任何命令 - 我认为它只是一个STDout过程?

如何附加到正在运行的NGINX实例以查看文件系统以调试我的问题?或者,我的帖子中有什么内容可以弹出任何人吗?

TIA!

1 个答案:

答案 0 :(得分:2)

你可以执行

docker exec -it $instance_name /bin/bash

使用docker ps查找实例名称