From the official Nginx docker file:
Using environment variables in nginx configuration:
Out-of-the-box, Nginx doesn't support using environment variables
inside most configuration blocks.
But envsubst
may be used as a
workaround if you need to generate your nginx configuration
dynamically before nginx starts.
Here is an example using docker-compose.yml:
image: nginx
volumes:
- ./mysite.template:/etc/nginx/conf.d/mysite.template
ports:
- "8080:80"
environment:
- NGINX_HOST=foobar.com
- NGINX_PORT=80
command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
The mysite.template file may then contain variable references like
this :
listen ${NGINX_PORT};
Update:
But you know this caused to its Nginx variables like this:
proxy_set_header X-Forwarded-Host $host;
damaged to:
proxy_set_header X-Forwarded-Host ;
So, to prevent that, i use this trick:
I have a script to run Nginx, that used on the docker-compose
file as command option for Nginx server, i named it run_nginx.sh
:
#!/usr/bin/env bash
export DOLLAR='$'
envsubst < nginx.conf.template > /etc/nginx/nginx.conf
nginx -g "daemon off;"
And because of defined new DOLLAR
variable on run_nginx.sh
script, now content of my nginx.conf.template
file for Nginx itself variable is like this:
proxy_set_header X-Forwarded-Host ${DOLLAR}host;
And for my defined variable is like this:
server_name ${WEB_DOMAIN} www.${WEB_DOMAIN};
Also here, there is my real use case for that.
You could just enter via docker run -it --entrypoint=/bin/bash $IMAGE -i
(you 'll launch a new container from the image and get a bash shell in interactive mode), then run the entrypoint command in that container.
You can then inspect the running container in the state it should be running.
EDIT: Since Docker 1.3 you can use exec
to run a process in a running container. Start your container as you 'd normally do, and then enter it by issuing:
docker exec -it $CONTAINER_ID /bin/bash
Assuming bash is installed you will be given shell access to the running container.
Best Answer
You'll need to install a kernel that supports AUFS.
I maintain one here: https://github.com/bnied/rhel-aufs-kernel