From a3b23dc253804a8d5361be8e9ca6d2d2f4ee89be Mon Sep 17 00:00:00 2001 From: Markus Blaschke Date: Thu, 15 Dec 2016 21:23:54 +0100 Subject: [PATCH] Fix samson-deployment startup Nginx was not started Added /storage as volume (default) --- docker/samson-deployment/latest/Dockerfile | 3 +- .../latest/Dockerfile.jinja2 | 1 + .../conf/bin/service.d/nginx.d/10-init.sh | 6 ++++ .../latest/conf/bin/service.d/nginx.sh | 7 ++++ .../latest/conf/etc/supervisor.d/nginx.conf | 2 +- .../tasks/bootstrap.yml | 32 +++++++++++++++++++ .../general/bin/service.d/nginx.d/10-init.sh | 6 ++++ .../general/bin/service.d/nginx.sh | 7 ++++ .../general/etc/supervisor.d/nginx.conf | 2 +- .../tasks/bootstrap.yml | 32 +++++++++++++++++++ .../images/samson-deployment.jinja2 | 2 +- 11 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 docker/samson-deployment/latest/conf/bin/service.d/nginx.d/10-init.sh create mode 100644 docker/samson-deployment/latest/conf/bin/service.d/nginx.sh create mode 100644 provisioning/samson-deployment/general/bin/service.d/nginx.d/10-init.sh create mode 100644 provisioning/samson-deployment/general/bin/service.d/nginx.sh diff --git a/docker/samson-deployment/latest/Dockerfile b/docker/samson-deployment/latest/Dockerfile index c6b7cbf84..cd79eefe5 100644 --- a/docker/samson-deployment/latest/Dockerfile +++ b/docker/samson-deployment/latest/Dockerfile @@ -195,11 +195,12 @@ ADD crontab /etc/cron.d/webdevops-samson-deployment RUN rake assets:precompile \ && /opt/docker/bin/control.sh service.enable cron \ - && /opt/docker/bin/provision run --tag bootstrap --role webdevops-samson-deployment \ + && /opt/docker/bin/provision run --tag bootstrap --role webdevops-base --role webdevops-base-app --role webdevops-samson-deployment \ && /opt/docker/bin/bootstrap.sh EXPOSE 80 +VOLUME /storage ENTRYPOINT ["/opt/docker/bin/entrypoint.sh"] CMD ["supervisord"] diff --git a/docker/samson-deployment/latest/Dockerfile.jinja2 b/docker/samson-deployment/latest/Dockerfile.jinja2 index cc5e6ad50..bc80ae122 100644 --- a/docker/samson-deployment/latest/Dockerfile.jinja2 +++ b/docker/samson-deployment/latest/Dockerfile.jinja2 @@ -38,6 +38,7 @@ {{ samsonDeployment.general() }} {{ docker.expose('80') }} +{{ docker.volume('/storage') }} {{ docker.entrypoint("/opt/docker/bin/entrypoint.sh") }} {{ docker.cmd("supervisord") }} diff --git a/docker/samson-deployment/latest/conf/bin/service.d/nginx.d/10-init.sh b/docker/samson-deployment/latest/conf/bin/service.d/nginx.d/10-init.sh new file mode 100644 index 000000000..a8e2dbcf6 --- /dev/null +++ b/docker/samson-deployment/latest/conf/bin/service.d/nginx.d/10-init.sh @@ -0,0 +1,6 @@ +# Prevent startup of nginx (ubuntu 16.04 needs it) +ln -f -s /var/lib/nginx/logs /var/log/nginx + +# Replace markers +find /opt/docker/etc/nginx/ -iname '*.conf' -print0 | xargs -0 -r rpl --quiet "" "$WEB_ALIAS_DOMAIN" +find /opt/docker/etc/nginx/ -iname '*.conf' -print0 | xargs -0 -r rpl --quiet "" "$HOSTNAME" diff --git a/docker/samson-deployment/latest/conf/bin/service.d/nginx.sh b/docker/samson-deployment/latest/conf/bin/service.d/nginx.sh new file mode 100644 index 000000000..f5cd26167 --- /dev/null +++ b/docker/samson-deployment/latest/conf/bin/service.d/nginx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/nginx.d/" + +exec /usr/sbin/nginx diff --git a/docker/samson-deployment/latest/conf/etc/supervisor.d/nginx.conf b/docker/samson-deployment/latest/conf/etc/supervisor.d/nginx.conf index 27c67537e..657bf499b 100644 --- a/docker/samson-deployment/latest/conf/etc/supervisor.d/nginx.conf +++ b/docker/samson-deployment/latest/conf/etc/supervisor.d/nginx.conf @@ -3,7 +3,7 @@ programs=nginxd priority=20 [program:nginxd] -command = /usr/sbin/nginx +command = /opt/docker/bin/service.d/nginx.sh process_name=%(program_name)s startsecs = 0 autostart = true diff --git a/docker/samson-deployment/latest/conf/provision/roles/webdevops-samson-deployment/tasks/bootstrap.yml b/docker/samson-deployment/latest/conf/provision/roles/webdevops-samson-deployment/tasks/bootstrap.yml index ced92e8ce..7088c0074 100644 --- a/docker/samson-deployment/latest/conf/provision/roles/webdevops-samson-deployment/tasks/bootstrap.yml +++ b/docker/samson-deployment/latest/conf/provision/roles/webdevops-samson-deployment/tasks/bootstrap.yml @@ -35,3 +35,35 @@ group: "{{ APPLICATION_GROUP }}" mode: u=rwX,g=rX,o=rX recurse: yes + +- name: Remove old log directory + file: + path: "/var/lib/nginx/logs" + state: absent + +- name: Create log directory + file: + path: "/var/lib/nginx/logs" + state: directory + +- name: Create stdout symlinks + file: + dest: "{{ item }}" + src: "/docker.stdout" + state: link + force: yes + with_items: + - "/var/lib/nginx/logs/access.log" + - "/var/lib/nginx/logs/error.log" + +- name: Create storage directories + file: + path: "{{ item }}" + state: directory + owner: "{{ APPLICATION_USER }}" + group: "{{ APPLICATION_GROUP }}" + mode: u=rwX,g=rX,o=rX + recurse: yes + with_items: + - "/storage" + - "/storage/db" diff --git a/provisioning/samson-deployment/general/bin/service.d/nginx.d/10-init.sh b/provisioning/samson-deployment/general/bin/service.d/nginx.d/10-init.sh new file mode 100644 index 000000000..a8e2dbcf6 --- /dev/null +++ b/provisioning/samson-deployment/general/bin/service.d/nginx.d/10-init.sh @@ -0,0 +1,6 @@ +# Prevent startup of nginx (ubuntu 16.04 needs it) +ln -f -s /var/lib/nginx/logs /var/log/nginx + +# Replace markers +find /opt/docker/etc/nginx/ -iname '*.conf' -print0 | xargs -0 -r rpl --quiet "" "$WEB_ALIAS_DOMAIN" +find /opt/docker/etc/nginx/ -iname '*.conf' -print0 | xargs -0 -r rpl --quiet "" "$HOSTNAME" diff --git a/provisioning/samson-deployment/general/bin/service.d/nginx.sh b/provisioning/samson-deployment/general/bin/service.d/nginx.sh new file mode 100644 index 000000000..f5cd26167 --- /dev/null +++ b/provisioning/samson-deployment/general/bin/service.d/nginx.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/nginx.d/" + +exec /usr/sbin/nginx diff --git a/provisioning/samson-deployment/general/etc/supervisor.d/nginx.conf b/provisioning/samson-deployment/general/etc/supervisor.d/nginx.conf index 27c67537e..657bf499b 100644 --- a/provisioning/samson-deployment/general/etc/supervisor.d/nginx.conf +++ b/provisioning/samson-deployment/general/etc/supervisor.d/nginx.conf @@ -3,7 +3,7 @@ programs=nginxd priority=20 [program:nginxd] -command = /usr/sbin/nginx +command = /opt/docker/bin/service.d/nginx.sh process_name=%(program_name)s startsecs = 0 autostart = true diff --git a/provisioning/samson-deployment/general/provision/roles/webdevops-samson-deployment/tasks/bootstrap.yml b/provisioning/samson-deployment/general/provision/roles/webdevops-samson-deployment/tasks/bootstrap.yml index ced92e8ce..7088c0074 100644 --- a/provisioning/samson-deployment/general/provision/roles/webdevops-samson-deployment/tasks/bootstrap.yml +++ b/provisioning/samson-deployment/general/provision/roles/webdevops-samson-deployment/tasks/bootstrap.yml @@ -35,3 +35,35 @@ group: "{{ APPLICATION_GROUP }}" mode: u=rwX,g=rX,o=rX recurse: yes + +- name: Remove old log directory + file: + path: "/var/lib/nginx/logs" + state: absent + +- name: Create log directory + file: + path: "/var/lib/nginx/logs" + state: directory + +- name: Create stdout symlinks + file: + dest: "{{ item }}" + src: "/docker.stdout" + state: link + force: yes + with_items: + - "/var/lib/nginx/logs/access.log" + - "/var/lib/nginx/logs/error.log" + +- name: Create storage directories + file: + path: "{{ item }}" + state: directory + owner: "{{ APPLICATION_USER }}" + group: "{{ APPLICATION_GROUP }}" + mode: u=rwX,g=rX,o=rX + recurse: yes + with_items: + - "/storage" + - "/storage/db" diff --git a/template/Dockerfile/images/samson-deployment.jinja2 b/template/Dockerfile/images/samson-deployment.jinja2 index d278add15..ffed14465 100644 --- a/template/Dockerfile/images/samson-deployment.jinja2 +++ b/template/Dockerfile/images/samson-deployment.jinja2 @@ -66,7 +66,7 @@ ADD crontab /etc/cron.d/webdevops-samson-deployment RUN rake assets:precompile \ && /opt/docker/bin/control.sh service.enable cron \ - {{ provision.runRoleInline('samson-deployment ', role) }} + {{ provision.runRoleInline('base', 'base-app', 'samson-deployment', role) }} {%- endmacro %}