mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-04-13 09:42:01 +00:00
Fixing docker commands, adding health check.
This commit is contained in:
parent
fd48cb8bd5
commit
8053c40b7b
5 changed files with 52 additions and 26 deletions
|
@ -114,33 +114,41 @@
|
||||||
git:
|
git:
|
||||||
repo: https://github.com/samuelclay/NewsBlur.git
|
repo: https://github.com/samuelclay/NewsBlur.git
|
||||||
dest: /srv/newsblur/
|
dest: /srv/newsblur/
|
||||||
version: master
|
version: blue-green-deploy
|
||||||
register: pulled
|
register: pulled
|
||||||
tags:
|
tags:
|
||||||
- static
|
- static
|
||||||
|
|
||||||
- name: Run new Docker container with temporary name
|
- name: Run new Docker container with temporary name
|
||||||
docker_container:
|
docker_container:
|
||||||
name: "newsblur_web_new"
|
name: newsblur_web_new
|
||||||
image: "newsblur/newsblur_web:latest"
|
image: newsblur/newsblur_python3
|
||||||
pull: true
|
container_default_behavior: no_defaults
|
||||||
|
pull: yes
|
||||||
|
env:
|
||||||
|
DOCKERBUILD: ""
|
||||||
state: started
|
state: started
|
||||||
restart_policy: always
|
command: gunicorn --config /srv/newsblur/config/gunicorn_conf.py newsblur_web.wsgi:application
|
||||||
command: "gunicorn newsblur.wsgi:application --bind :8000 --workers 4"
|
env:
|
||||||
hostname: "newsblur_web_new"
|
TEMP8001: "true"
|
||||||
|
hostname: "{{ inventory_hostname }}"
|
||||||
|
log_driver: json-file
|
||||||
|
log_options:
|
||||||
|
max-size: 100m
|
||||||
|
networks_cli_compatible: yes
|
||||||
|
network_mode: default
|
||||||
networks:
|
networks:
|
||||||
- name: newsblur-network
|
- name: newsblurnet
|
||||||
ports:
|
ports:
|
||||||
- "8001:8000" # Use different port for new instance
|
- "8001:8000"
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
user: 1000:1001
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/newsblur:/srv/newsblur
|
- /srv/newsblur:/srv/newsblur
|
||||||
- /etc/nginx/sites-enabled:/etc/nginx/sites-enabled
|
|
||||||
- /etc/nginx/sites-available:/etc/nginx/sites-available
|
|
||||||
- /srv/secrets-newsblur:/srv/secrets-newsblur
|
|
||||||
|
|
||||||
- name: Wait for new temp container to be healthy
|
- name: Wait for new temp container to be healthy
|
||||||
uri:
|
uri:
|
||||||
url: "http://localhost:8001/api/health-check" # Add health check endpoint
|
url: "http://localhost:8001/health-check"
|
||||||
status_code: 200
|
status_code: 200
|
||||||
validate_certs: no
|
validate_certs: no
|
||||||
register: result
|
register: result
|
||||||
|
@ -150,26 +158,34 @@
|
||||||
|
|
||||||
- name: Run new Docker container with original name
|
- name: Run new Docker container with original name
|
||||||
docker_container:
|
docker_container:
|
||||||
name: "newsblur_web"
|
name: newsblur_web
|
||||||
image: "newsblur/newsblur_web:latest"
|
image: newsblur/newsblur_python3
|
||||||
pull: true
|
container_default_behavior: no_defaults
|
||||||
|
pull: yes
|
||||||
|
env:
|
||||||
|
DOCKERBUILD: ""
|
||||||
state: started
|
state: started
|
||||||
restart_policy: always
|
command: gunicorn --config /srv/newsblur/config/gunicorn_conf.py newsblur_web.wsgi:application
|
||||||
command: "gunicorn newsblur.wsgi:application --bind :8000 --workers 4"
|
env:
|
||||||
hostname: "newsblur_web"
|
TEMP8001: "true"
|
||||||
|
hostname: "{{ inventory_hostname }}"
|
||||||
|
log_driver: json-file
|
||||||
|
log_options:
|
||||||
|
max-size: 100m
|
||||||
|
networks_cli_compatible: yes
|
||||||
|
network_mode: default
|
||||||
networks:
|
networks:
|
||||||
- name: newsblur-network
|
- name: newsblurnet
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
user: 1000:1001
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/newsblur:/srv/newsblur
|
- /srv/newsblur:/srv/newsblur
|
||||||
- /etc/nginx/sites-enabled:/etc/nginx/sites-enabled
|
|
||||||
- /etc/nginx/sites-available:/etc/nginx/sites-available
|
|
||||||
- /srv/secrets-newsblur:/srv/secrets-newsblur
|
|
||||||
|
|
||||||
- name: Wait for new original container to be healthy
|
- name: Wait for new original container to be healthy
|
||||||
uri:
|
uri:
|
||||||
url: "http://localhost:8000/api/health-check"
|
url: "http://localhost:8000/health-check"
|
||||||
status_code: 200
|
status_code: 200
|
||||||
validate_certs: no
|
validate_certs: no
|
||||||
register: result
|
register: result
|
||||||
|
|
|
@ -131,3 +131,7 @@ def redis_check(request):
|
||||||
if key:
|
if key:
|
||||||
return HttpResponse(unicode(key))
|
return HttpResponse(unicode(key))
|
||||||
assert False, "Cannot read from redis-%s database" % pool
|
assert False, "Cannot read from redis-%s database" % pool
|
||||||
|
|
||||||
|
|
||||||
|
def health_check(request):
|
||||||
|
return HttpResponse("OK")
|
||||||
|
|
|
@ -12,6 +12,9 @@ GIGS_OF_MEMORY = psutil.virtual_memory().total / 1024 / 1024 / 1024.0
|
||||||
NUM_CPUS = psutil.cpu_count()
|
NUM_CPUS = psutil.cpu_count()
|
||||||
|
|
||||||
bind = "0.0.0.0:8000"
|
bind = "0.0.0.0:8000"
|
||||||
|
if os.environ.get("TEMP8001", False):
|
||||||
|
bind = "0.0.0.0:8001"
|
||||||
|
|
||||||
pidfile = "/srv/newsblur/logs/gunicorn.pid"
|
pidfile = "/srv/newsblur/logs/gunicorn.pid"
|
||||||
logfile = "/srv/newsblur/logs/production.log"
|
logfile = "/srv/newsblur/logs/production.log"
|
||||||
accesslog = "/srv/newsblur/logs/production.log"
|
accesslog = "/srv/newsblur/logs/production.log"
|
||||||
|
@ -25,6 +28,7 @@ forwarded_allow_ips = "*"
|
||||||
limit_request_line = 16000
|
limit_request_line = 16000
|
||||||
limit_request_fields = 1000
|
limit_request_fields = 1000
|
||||||
worker_tmp_dir = "/dev/shm"
|
worker_tmp_dir = "/dev/shm"
|
||||||
|
reload = False
|
||||||
|
|
||||||
workers = max(int(math.floor(GIGS_OF_MEMORY * 2)), 3)
|
workers = max(int(math.floor(GIGS_OF_MEMORY * 2)), 3)
|
||||||
|
|
||||||
|
@ -33,6 +37,7 @@ if workers > 16:
|
||||||
|
|
||||||
if os.environ.get("DOCKERBUILD", False):
|
if os.environ.get("DOCKERBUILD", False):
|
||||||
workers = 2
|
workers = 2
|
||||||
|
reload = True
|
||||||
|
|
||||||
# If hostname has staging in it, only 2 workers
|
# If hostname has staging in it, only 2 workers
|
||||||
if app_env and "staging" in getattr(app_env, "SERVER_NAME", ""):
|
if app_env and "staging" in getattr(app_env, "SERVER_NAME", ""):
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
|
|
||||||
if [[ -z "${TEST}" && "${TEST}" = "True" ]]
|
if [[ -z "${TEST}" && "${TEST}" = "True" ]]
|
||||||
then echo " ---> Starting test env"
|
then echo " ---> Starting test env"
|
||||||
else python3 manage.py check_db; gunicorn -c config/gunicorn_conf.py --reload newsblur_web.wsgi:application
|
else python3 manage.py check_db; gunicorn -c config/gunicorn_conf.py newsblur_web.wsgi:application
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -84,6 +84,7 @@ urlpatterns = [
|
||||||
url(r"^account/ifttt/v1/", include("apps.oauth.urls")),
|
url(r"^account/ifttt/v1/", include("apps.oauth.urls")),
|
||||||
url(r"^account/", include("oauth2_provider.urls", namespace="oauth2_provider")),
|
url(r"^account/", include("oauth2_provider.urls", namespace="oauth2_provider")),
|
||||||
url(r"^monitor/", include("apps.monitor.urls"), name="monitor"),
|
url(r"^monitor/", include("apps.monitor.urls"), name="monitor"),
|
||||||
|
url(r"^health-check/", static_views.health_check, name="health-check"),
|
||||||
url("", include("django_prometheus.urls")),
|
url("", include("django_prometheus.urls")),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue