Put Nginx in front of Rails
This commit is contained in:
parent
0823c79b54
commit
442a68bb21
17
Dockerfile
17
Dockerfile
@ -16,8 +16,6 @@ MAINTAINER Marcin Kulik <support@asciinema.org>
|
|||||||
#
|
#
|
||||||
# Assuming you are running Docker Toolbox and VirtualBox: go to http://192.168.99.100:3000/ and enjoy.
|
# Assuming you are running Docker Toolbox and VirtualBox: go to http://192.168.99.100:3000/ and enjoy.
|
||||||
|
|
||||||
EXPOSE 3000
|
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
ARG NODE_VERSION=node_6.x
|
ARG NODE_VERSION=node_6.x
|
||||||
ARG DISTRO=xenial
|
ARG DISTRO=xenial
|
||||||
@ -37,11 +35,13 @@ RUN apt-get update && \
|
|||||||
libtool \
|
libtool \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
libxslt1-dev \
|
libxslt1-dev \
|
||||||
|
nginx \
|
||||||
nodejs \
|
nodejs \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
ruby2.1 \
|
ruby2.1 \
|
||||||
ruby2.1-dev \
|
ruby2.1-dev \
|
||||||
sendmail \
|
sendmail \
|
||||||
|
supervisor \
|
||||||
ttf-bitstream-vera
|
ttf-bitstream-vera
|
||||||
|
|
||||||
# autoconf, libtool and pkg-config for libtsm
|
# autoconf, libtool and pkg-config for libtsm
|
||||||
@ -102,6 +102,15 @@ RUN cd src && make
|
|||||||
|
|
||||||
RUN cd a2png && lein cljsbuild once main && lein cljsbuild once page
|
RUN cd a2png && lein cljsbuild once main && lein cljsbuild once page
|
||||||
|
|
||||||
|
# configure Nginx
|
||||||
|
|
||||||
|
COPY docker/nginx/asciinema.conf /etc/nginx/sites-available/default
|
||||||
|
|
||||||
|
# configure Supervisor
|
||||||
|
|
||||||
|
RUN mkdir -p /var/log/supervisor
|
||||||
|
COPY docker/supervisor/asciinema.conf /etc/supervisor/conf.d/asciinema.conf
|
||||||
|
|
||||||
VOLUME ["/app/config", "/app/log", "/app/uploads"]
|
VOLUME ["/app/config", "/app/log", "/app/uploads"]
|
||||||
|
|
||||||
# 172.17.42.1 is the docker0 address
|
# 172.17.42.1 is the docker0 address
|
||||||
@ -113,6 +122,8 @@ ENV RAILS_ENV "development"
|
|||||||
# for ex. asciinema.example.com
|
# for ex. asciinema.example.com
|
||||||
ENV HOST "localhost:3000"
|
ENV HOST "localhost:3000"
|
||||||
|
|
||||||
CMD ["bundle", "exec", "rails", "server"]
|
CMD ["/usr/bin/supervisord"]
|
||||||
# bundle exec rake db:setup
|
# bundle exec rake db:setup
|
||||||
# bundle exec sidekiq OR ruby start_sidekiq.rb (to start sidekiq with sendmail)
|
# bundle exec sidekiq OR ruby start_sidekiq.rb (to start sidekiq with sendmail)
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
28
docker/nginx/asciinema.conf
Normal file
28
docker/nginx/asciinema.conf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
upstream rails-server {
|
||||||
|
server 127.0.0.1:3000 fail_timeout=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80 default_server;
|
||||||
|
listen [::]:80 default_server;
|
||||||
|
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
root /app/public;
|
||||||
|
|
||||||
|
client_max_body_size 16m;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/index.html $uri.html @rails;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @rails {
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_pass http://rails-server;
|
||||||
|
proxy_redirect off;
|
||||||
|
error_page 500 502 504 /500.html; # Rails error pages
|
||||||
|
}
|
||||||
|
}
|
11
docker/supervisor/asciinema.conf
Normal file
11
docker/supervisor/asciinema.conf
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[supervisord]
|
||||||
|
nodaemon=true
|
||||||
|
|
||||||
|
[program:nginx]
|
||||||
|
command=/usr/sbin/nginx -g "daemon off;"
|
||||||
|
redirect_stderr=true
|
||||||
|
|
||||||
|
[program:rails]
|
||||||
|
command=bundle exec rails server
|
||||||
|
redirect_stderr=true
|
||||||
|
directory=/app
|
Loading…
Reference in New Issue
Block a user