我一直在尝试设置将托管@R_404_196@服务器的本地docker容器.首先,这是我的Dockerfile:
# Set @R_404_196@ base image
FROM @R_404_196@
# File Author / Maintainer
MAINTAINER myuser "myemail@mydomain.com"
# Copy custom configuration file from the current directory
COPY @R_404_196@.conf /etc/@R_404_196@/@R_404_196@.conf
我确实使用docker build命令构建了这个文件,当我列出图像时,我可以在列表中看到该图像.
现在,我尝试运行此新创建的映像,导致出现错误:
my-MacBook-Pro:@R_404_196@-docker me$docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myrepo @R_404_196@-latest 0d73419e8da9 12 minutes ago 182.8 MB
hello-world latest c54a2cc56cbb 13 days ago 1.848 kB
@R_404_196@ latest 0d409d33b27e 6 weeks ago 182.8 MB
my-MacBook-Pro:@R_404_196@-docker me$docker run -it myrepo:@R_404_196@-latest
2016/07/15 07:07:35 [emerg] 1#1: open() "/etc/@R_404_196@/logs/access.log" Failed (2: No such file or directory)
@R_404_196@: [emerg] open() "/etc/@R_404_196@/logs/access.log" Failed (2: No such file or directory)
日志文件的路径在我的@R_404_196@.conf中配置,如下所示:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/@R_404_196@.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8080;
server_name localhost;
root /Users/me/Projects/SandBox/my-app;
#charset koi8-r;
access_log logs/host.access.log main;
#
# Wide-open CORS config for @R_404_196@
#
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
# /api will server your proxied API that is running on same machine different port
# or another machine. So you can protect your API endpoint not get hit by public directly
location /api {
proxy_pass http://localhost:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Access-Control-Allow-Origin *;
proxy_set_header Access-Control-Allow-Origin $http_origin;
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# deny access to .htaccess files,if Apache's document root
# concurs with @R_404_196@'s one
#
#location ~ /\.ht {
# deny all;
#}
}
include servers/*;
}
现在,当我尝试运行此@R_404_196@映像时,出现以下错误:
2016/07/15 07:07:35 [emerg] 1#1: open() "/etc/@R_404_196@/logs/access.log" Failed (2: No such file or directory)
@R_404_196@: [emerg] open() "/etc/@R_404_196@/logs/access.log" Failed (2: No such file or directory)
我应该怎么做才能解决这个问题?还有那条路应该在哪里?我想它是在Docker公开的底层OS路径上吗?
最佳答案
Dockerfile中的基本映像是@R_404_196@(确切地说是@R_404_196@:latest).它具有来自Debian @R_404_196@软件包的预配置@R_404_196@配置.您可以自己检查容器:docker run -it –rm @R_404_196@ / bin / bash并查看文件和目录,以了解关于它的一些事实:
>它为@R_404_196@用户提供
>它提供/ var / log / @R_404_196@目录,但root拥有它
>它在任何人都可写的目录中提供access.log和error.log
(基本@R_404_196@映像的Dockerfile是here)
您的配置:
>以@R_404_196@的形式运行@R_404_196@(是default)
>尝试将日志文件写入/ etc / @R_404_196@ / logs