Skip to content
This repository was archived by the owner on Feb 9, 2023. It is now read-only.

Commit bdbf1c9

Browse files
committed
Merge pull request #6 from madwire/cleanup-and-update-dockerfile
Cleanup and update dockerfile
2 parents db3da89 + 253d2bb commit bdbf1c9

File tree

4 files changed

+41
-29
lines changed

4 files changed

+41
-29
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.env

Dockerfile

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,44 @@
1-
FROM nginx:1.9.0
1+
FROM nginx:1.9.14
22
MAINTAINER Richard Adams richard@madwire.co.uk
33

4+
ENV NGINX_DEFAULT_CONF=/etc/nginx/conf.d/default.conf
5+
ENV NGINX_DEFAULT_SSL_CRT=/etc/nginx/certs/default.crt
6+
ENV NGINX_DEFAULT_SSL_KEY=/etc/nginx/certs/default.key
7+
48
# Install wget and install/updates certificates
59
RUN apt-get update \
6-
&& apt-get install -y -q --no-install-recommends \
10+
&& apt-get install -y -q --no-install-recommends \
711
ca-certificates \
812
wget \
913
build-essential \
1014
openssl \
1115
libssl-dev \
1216
ruby-full \
13-
&& apt-get clean \
14-
&& rm -r /var/lib/apt/lists/*
17+
&& apt-get clean \
18+
&& rm -r /var/lib/apt/lists/*
1519

1620
# Configure Nginx and apply fix for very long server names
1721
RUN echo "daemon off;" >> /etc/nginx/nginx.conf \
18-
&& sed -i 's/^http {/&\n server_names_hash_bucket_size 128;/g' /etc/nginx/nginx.conf
22+
&& sed -i 's/^http {/&\n server_names_hash_bucket_size 128;/g' /etc/nginx/nginx.conf
1923

2024
# Install Forego
21-
RUN wget -P /usr/local/bin https://godist.herokuapp.com/projects/ddollar/forego/releases/current/linux-amd64/forego \
25+
RUN wget -P /usr/local/bin https://github.com/jwilder/forego/releases/download/v0.16.1/forego \
2226
&& chmod u+x /usr/local/bin/forego
2327

2428
# Install App dependancies
2529
RUN gem install faye-websocket --no-ri --no-rdoc && gem install tutum --no-ri --no-rdoc
2630

27-
ENV NGINX_DEFAULT_CONF=/etc/nginx/conf.d/default.conf
28-
2931
COPY . /app/
3032
WORKDIR /app/
3133

3234
# Generate Default Self-signed certificate
3335
RUN openssl genrsa -des3 -passout pass:x -out default.pass.key 2048 \
34-
&& openssl rsa -passin pass:x -in default.pass.key -out default.key \
35-
&& rm default.pass.key \
36-
&& openssl req -new -key default.key -out default.csr -subj "/C=UK/ST=State/L=local/O=OrgName/OU=Web/CN=example.com" \
37-
&& openssl x509 -req -days 365 -in default.csr -signkey default.key -out default.crt \
38-
&& mkdir -p /etc/nginx/certs/ \
39-
&& mv default.crt /etc/nginx/certs/default.crt && mv default.key /etc/nginx/certs/default.key
40-
# Then, just use the generated default.key and default.crt files.
36+
&& openssl rsa -passin pass:x -in default.pass.key -out default.key \
37+
&& rm default.pass.key \
38+
&& openssl req -new -key default.key -out default.csr -subj "/C=UK/ST=State/L=local/O=OrgName/OU=Web/CN=example.com" \
39+
&& openssl x509 -req -days 365 -in default.csr -signkey default.key -out default.crt \
40+
&& mkdir -p /etc/nginx/certs/ \
41+
&& mv default.crt /etc/nginx/certs/default.crt && mv default.key /etc/nginx/certs/default.key
42+
# Then, just use the generated default.key and default.crt files.
4143

4244
CMD ["forego", "start", "-r"]

docker-compose.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
dockercloud_nginx_proxy:
22
build: .
3+
env_file: .env

nginx.conf.erb

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ server {
3737
return 503;
3838
}
3939

40+
server {
41+
server_name _; # This is just an invalid value which will never trigger on a real hostname.
42+
listen 443 ssl http2;
43+
return 503;
44+
ssl_certificate <%= ENV['NGINX_DEFAULT_SSL_CRT'] %>;
45+
ssl_certificate_key <%= ENV['NGINX_DEFAULT_SSL_KEY'] %>;
46+
}
47+
4048
<% @services.each do |service| %>
4149
<% if service.host %>
4250
upstream <%= service.name %> {
@@ -48,29 +56,29 @@ upstream <%= service.name %> {
4856
<% if service.ssl? %>
4957

5058
server {
51-
server_name <%= service.host %>;
52-
return 301 https://$host$request_uri;
59+
server_name <%= service.host %>;
60+
return 301 https://$host$request_uri;
5361
}
5462

5563
server {
56-
server_name <%= service.host %>;
57-
listen 443 ssl spdy;
64+
server_name <%= service.host %>;
65+
listen 443 ssl http2;
5866

59-
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
60-
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
67+
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
68+
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
6169

62-
ssl_prefer_server_ciphers on;
63-
ssl_session_timeout 5m;
64-
ssl_session_cache shared:SSL:50m;
70+
ssl_prefer_server_ciphers on;
71+
ssl_session_timeout 5m;
72+
ssl_session_cache shared:SSL:50m;
6573

66-
ssl_certificate /etc/nginx/certs/default.crt;
67-
ssl_certificate_key /etc/nginx/certs/default.key;
74+
ssl_certificate <%= ENV['NGINX_DEFAULT_SSL_CRT'] %>;
75+
ssl_certificate_key <%= ENV['NGINX_DEFAULT_SSL_KEY'] %>;
6876

69-
add_header Strict-Transport-Security "max-age=31536000";
77+
add_header Strict-Transport-Security "max-age=31536000";
7078

71-
location / {
79+
location / {
7280
proxy_pass http://<%= service.name %>;
73-
}
81+
}
7482
}
7583

7684
<% else %>

0 commit comments

Comments
 (0)