我有一个在docker容器内的AWS ec2中运行的flask应用程序,但出现延迟问题。我认为这是因为在容器内,本地主机同时路由到ipv4的127.0.0.1
和ipv6的::1
(基于其他SO帖子)。我发现this blog post可以解决此问题。但是在博客中,他使用了nginx,这是我以前从未使用过的。他有一个Nginx配置文件:
location / { try_files $uri @project; }
location @project {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
}
并且我不确定如何将其放置在容器中以便正确读取。我在/ etc / nginx中读到了某个地方,但是然后如何编辑dockerfile以在其中包含此conf?
这是他建议的Dockerfile。文件复制到的行ADD nginx /etc/nginx
是吗?他只是没有给文件扩展名?
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y build-essential nginx python3.4 python3.4-dev
RUN easy_install3 pip
WORKDIR /project
ADD requirements.txt /project/requirements.txt
RUN pip install -r requirements.txt
ADD . /project
ADD nginx /etc/nginx
CMD uwsgi -s /tmp/uwsgi.sock -w project:app --chown-socket=www-data:www-data --enable-threads & \
nginx -g 'daemon off;'
答案 0 :(得分:1)
是的,他正在将文件nginx
添加到容器文件系统位置/etc/nginx/
根据nginx.conf
文档,我个人将文件命名为nginx
,因为这是默认名称。
默认情况下,配置文件名为nginx.conf并放置在 目录/ usr / local / nginx / conf,/ etc / nginx或 / usr / local / etc / nginx。
此外,我建议根据Best practices for writing Dockerfiles使用COPY
代替ADD
对于不需要ADD的tar的其他项(文件,目录) 自动提取功能,您应该始终使用COPY。
要执行此操作,您需要在运行flask的容器上安装nginx
。