我可以访问 运行 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
查找实例名
快速总结: 我有一个 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
查找实例名