-
Notifications
You must be signed in to change notification settings - Fork 62
/
Copy pathfabfile.py
43 lines (29 loc) · 1.07 KB
/
fabfile.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# coding=utf-8
import os
from fabric.api import env
from fabric.context_managers import cd
from fabric.decorators import roles
from fabric.operations import run, local, put
env.roledefs['master'] = ['{{ project_name }}@xxx.xxx.xxx.xxx']
def _production_env():
# Speedup connection setup to server.
env.disable_known_hosts = True
env.key_filename = [os.path.join(os.environ['HOME'], '.ssh', 'id_rsa')]
env.project_root = '~/app/'
@roles('master')
def build(only=False):
if not only or only == 'app':
local('docker build -f docker/production/Dockerfile -t {{ project_name }}/projects:{{ project_name }}-app .')
local('docker push {{ project_name }}/projects:{{ project_name }}-app')
@roles('master')
def deploy():
_production_env()
with cd(env.project_root):
put('docker/production/docker-compose.yml', '~/app/')
run('docker-compose pull')
run('docker-compose up -d')
@roles('master')
def clear_cache():
_production_env()
with cd(env.project_root):
run('docker-compose exec --rm manage clear_cache')