Back to roles list

sa-nginx-container

Build Status License: MIT Ansible-Container friendly

Helper role to be executed with ansible-container aiming to build nginx based service for your application. Role is based on sa-nginx role, your docker image might be any of ubuntu (14.04 LTS / 16.04 LTS), CentOS 7+, Fedora 25+, Alpine (3.4. 3.5 +)

Role is best used in conjuntion with previously applied https://github.com/softasap/sa-container-bootstrap role. Please check sa-container-bootstrap role for options.

Role can be used on a standalone basis, including dumb-init support out of the box.

Variables

User inside container used to run

container_user: nginx

Container's nginx user id

container_uid: 1000

Container init system used in base image. Can be unset (you are using smth on your own control)

container_init: "dumb-init" # phusion-init

dumb_init_version: "1.2.0"

Directory to place nginx pid

nginx_pid_dir: /run/nginx

Interoperability with other containers - where to place static content, and which directories need to be rsynced inside container.

nginx_static_dir: /static

# directories to be copied inside docker container
nginx_asset_dirs: []

#directories already mapped inside docker container during build
nginx_container_asset_dirs: []

In case if you don't provide your own nginx conf, container will use sa-nginx scheme: site configs to be placed to /etc/nginx/sites-enabled, default nginx.conf might be adjusted by specifying list of corrections in nginx_conf_properties

nginx_conf_properties:
  - {
      regexp: "^daemon *",
      line: "daemon off;",
      insertbefore: "BOF"
    }
  - {
      regexp: "^worker_processes *",
      line: "worker_processes auto;",
      insertbefore: "BOF"
    }
  - {
      regexp: "^pid *",
      line: "pid {{nginx_pid_dir}}/nginx.pid;",
      insertbefore: "BOF"
    }

Code in action

container.yml

we install nginx container role, and configure our application by applying some project specific role in order to provide needed nginx tuning.


version: "2"
settings:
  conductor_base: ubuntu:16.04
  volumes:
   - temp-space:/tmp   # Used to copy static content between containers

services:
   www:
     from: ubuntu:16.04
     container_name: www
     roles:
       - {
           role: "softasap.sa-nginx-container"
         }
       - {
           role: "../standalone-fallback"
         }

volumes:
  temp-space:
    docker: {}

See box-example for the standalone working example. It will configure application image that will display 'OK' on connect - check it out:

Usage with sa-container-bootstrap

2BD

Temporary hints

(1)

at a moment ansible-container is highly under development. You might spot issues, that are fixed in develop branch only.

In that case you might need to install ansible-container from source, i.e.

git clone https://github.com/ansible/ansible-container.git
cd ansible-container
git checkout develop
pip install -e .[docker,openshift]

If for some reason install is messed (manual packages updates, removals, etc) - try pip install with --ignore-installed flag.

later, when issue fix is released - to uninstall package installed in that way from source:

At {virtualenv}/lib/python2.7/site-packages/ (if not using virtualenv then {system_dir, like /usr/local}/lib/python2.7/dist-packages/)

remove the egg file (e.g. ansible-container.egg-link) if there is any;

from file easy-install.pth, remove the corresponding line (it should be a path to the source directory or of an egg file).

(2)

When using box-example, pay attention to container.yml, in particular, conductor_base should be derived from the same distribution as you're building your target containers with, check list of currently supported base systems:

(3) If your system services are derived from different OS base images, than ... ?

Copyright and license

Code licensed under the [BSD 3 clause] (https://opensource.org/licenses/BSD-3-Clause) or the [MIT License] (http://opensource.org/licenses/MIT).

Subscribe for roles updates at [FB] (https://www.facebook.com/SoftAsap/)

Join gitter discussion channel at Gitter