As documented here, you simply run /sbin/init
as the command just like any other unix booting from single user to multi-user mode.
https://stackoverflow.com/questions/19332662/start-full-container-in-docker
Containers can be full blown OS's, they just don't have to be (neither do VMs for that matter, it's just more complicated to configure and manage).
I would say the whole point of Docker is to make application containers easy, so that you only have to configure an app, not the whole OS.
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.
Best Answer
Edit
/etc/hostname
is one thing for which you need ssh access inside the container. Otherwise, you can spin up the container with-h
option.To set the host and domain names: