Skip to content

Commit 08fe10d

Browse files
committed
Update README, expand examples
1 parent 105ee9e commit 08fe10d

File tree

1 file changed

+127
-14
lines changed

1 file changed

+127
-14
lines changed

README.md

+127-14
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,145 @@
88
- Uses [tini][tini] for zombie reaping and signal forwarding.
99
- Includes ``EXPOSE 80 443``, so standard container linking will make it
1010
automatically available to the linked containers.
11-
- Can be coupled with other containers to provide SSL access and/or
11+
- Can be coupled with another container to provide SSL access and/or
1212
proxying.
1313

1414
## Usage
1515

16-
### Start a Nginx instance and connect to it from an application
16+
### Simple static site hosting
1717

18+
#### From host
19+
20+
```console
21+
$ docker run --name some-nginx -v /some/content:/var/www/html:ro -d tklx/nginx
22+
```
23+
24+
```console
25+
$ docker run --name some-nginx -v /some/content:/var/www/html:ro -v /some/config/file:/etc/nginx/sites-available/default:ro -d tklx/nginx
26+
```
27+
28+
#### From host (cleaner solution with Dockerfile)
29+
30+
```console
31+
$ ls
32+
html/ default Dockerfile
33+
$ cat Dockerfile
34+
FROM tklx/nginx
35+
36+
COPY html /var/www/html
37+
COPY default /etc/nginx/sites-available/default
38+
$ docker build -t some-content .
39+
$ docker run --name some-nginx -d some-content
40+
```
41+
42+
#### From another container
43+
44+
```console
45+
$ docker run --name some-content -v /var/www/html some-content
46+
$ docker run --name some-nginx --volumes-from=some-content -d tklx/nginx
47+
```
48+
49+
### Exposing the port
50+
51+
#### Specific port
52+
53+
```console
54+
$ docker run --name some-nginx -d -p 8080:80 tklx/nginx
55+
```
56+
57+
#### Docker-chosen port
1858
```console
19-
$ docker run --name some-nginx -d tklx/nginx
20-
$ docker run --name some-app --link some-nginx:nginx -d app-that-uses-nginx
59+
$ docker run --name some-nginx -dP tklx/nginx
60+
$ docker port some-nginx
61+
443/tcp -> 0.0.0.0:32770
62+
80/tcp -> 0.0.0.0:32771
2163
```
2264

23-
### Set up HTTPS websites
65+
### Setting up HTTPS websites
2466

2567
```console
26-
$ docker run --name some-ssl-data -d some-ssl-vendor/some-ssl-container
27-
$ docker run --name some-nginx -d tklx/nginx --volumes-from=some-ssl-data:ro
28-
$ docker run -it --rm tklx/base:0.1.0 --volumes-from=some-nginx:rw
29-
base$ echo 'server { listen 443 ssl; server_name www.example.com; ssl_certificate /etc/ssl/private/www.example.com; ssl_certificate_key /etc/ssl/private/www.example.com.key; root /var/www; }' >> /etc/nginx/sites-available/www.example.com
30-
base$ ln -s /etc/nginx/sites-available/www.example.com /etc/nginx/sites-enabled/www.example.com
31-
base$ exit
32-
$ docker exec some-nginx nginx -s reload
33-
$ docker run --name some-app --link some-nginx:nginx -d app-that-uses-nginx
68+
$ docker run --name some-certs -v /etc/ssl/private:ro -d cert-provider
69+
$ docker run --name some-config -v /etc/nginx/ -d config-provider
70+
$ docker exec some-config cat /etc/nginx/sites-enabled/www.example.com
71+
server {
72+
listen 443 ssl;
73+
server_name www.example.com;
74+
75+
ssl_certificate /etc/ssl/private/www.example.com;
76+
ssl_certificate_key /etc/ssl/private/www.example.com.key;
77+
78+
root /var/www;
79+
}
80+
$ docker run --name some-nginx --volumes-from=some-certs --volumes-from=some-config -d tklx/nginx
3481
```
3582

3683
We recommend using the official [guidelines][nginx-ssl] to set up your SSL server correctly.
3784

85+
### Setting up a reverse proxy
86+
87+
```console
88+
$ docker run --name some-app -v /var/www -v /etc/nginx/sites-available -d backend-app
89+
$ docker run --name some-nginx --volumes-from=some-app --link some-app:some-app -d tklx/nginx
90+
$ docker exec some-nginx ls /etc/nginx/sites-enabled/
91+
some-app-site
92+
$ docker exec some-nginx cat /etc/nginx/sites-enabled/some-app-site
93+
server {
94+
listen 80 default_server;
95+
server_name www.example.com;
96+
97+
root /var/www;
98+
99+
location / {
100+
try_file $url $url/ @backend = 404;
101+
}
102+
103+
location @backend {
104+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
105+
proxy_set_header Host $http_host;
106+
proxy_pass http://some-app/;
107+
proxy_redirect default;
108+
}
109+
}
110+
```
111+
112+
113+
114+
### Setting up a reverse proxy with SSL termination
115+
116+
```console
117+
$ docker run --name some-certs -v /etc/ssl/private:ro -d cert-provider
118+
$ docker run --name some-app -v /var/www -v /etc/nginx/sites-available -d backend-app
119+
$ docker run --name some-nginx --volumes-from=some-app --volumes-from=some-certs --link some-app:some-app -d tklx/nginx
120+
$ docker exec some-nginx ls /etc/nginx/sites-enabled/
121+
some-app-site
122+
$ docker exec some-nginx cat /etc/nginx/sites-enabled/some-app-site
123+
server {
124+
listen 80 default_server;
125+
server_name www.example.com;
126+
127+
listen 443 ssl default_server;
128+
129+
root /var/www;
130+
131+
ssl_certificate /etc/ssl/private/www.example.com.pem;
132+
ssl_certificate_key /etc/ssl/private/www.example.com.key;
133+
134+
location / {
135+
try_file $url $url/ @backend = 404;
136+
}
137+
138+
location @backend {
139+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
140+
proxy_set_header X-Forwarded-Proto $scheme;
141+
proxy_set_header Host $http_host;
142+
proxy_pass http://some-app/;
143+
proxy_redirect default;
144+
}
145+
}
146+
```
147+
148+
For further info on SSL termination, please refer to the [official documentation][nginx-ssl-termination].
149+
38150
## Status
39151

40152
Currently on major version zero (0.y.z). Per [Semantic Versioning][semver],
@@ -48,6 +160,7 @@ tracking of bugs, issues and feature requests.
48160

49161
[base]: https://github.com/tklx/base
50162
[tini]: https://github.com/krallin/tini
51-
[nginx-ssl]: http://nginx.org/en/docs/http/configuring_https_servers.html
163+
[nginx-ssl]: https://nginx.org/en/docs/http/configuring_https_servers.html
164+
[nginx-ssl-termination]: https://www.nginx.com/resources/admin-guide/nginx-ssl-termination/
52165
[semver]: http://semver.org/
53166
[tracker]: https://github.com/tklx/tracker/issues

0 commit comments

Comments
 (0)