forked from datajoint/datajoint-python
-
Notifications
You must be signed in to change notification settings - Fork 4
/
local-docker-compose.yml
110 lines (110 loc) · 3.43 KB
/
local-docker-compose.yml
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# docker-compose -f local-docker-compose.yml --env-file LNX.env up --build
version: '2.2'
x-net: &net
networks:
- main
services:
db:
<<: *net
image: datajoint/mysql:$MYSQL_VER
environment:
- MYSQL_ROOT_PASSWORD=simple
# ports:
# - "3306:3306"
# To persist MySQL data
# volumes:
# - ./mysql/data:/var/lib/mysql
minio:
<<: *net
image: minio/minio:$MINIO_VER
environment:
- MINIO_ACCESS_KEY=datajoint
- MINIO_SECRET_KEY=datajoint
# ports:
# - "9000:9000"
# To persist MinIO data and config
# volumes:
# - ./minio/data:/data
# - ./minio/config:/root/.minio
command: server --address ":9000" /data
healthcheck:
test: ["CMD", "curl", "--fail", "http://minio:9000/minio/health/live"]
timeout: 5s
retries: 60
interval: 1s
fakeservices.datajoint.io:
<<: *net
image: raphaelguzman/nginx:v0.0.13
environment:
- ADD_db_TYPE=DATABASE
- ADD_db_ENDPOINT=db:3306
- ADD_minio_TYPE=MINIO
- ADD_minio_ENDPOINT=minio:9000
- ADD_minio_PORT=80 # allow unencrypted connections
- ADD_minio_PREFIX=/datajoint
- ADD_browser_TYPE=MINIOADMIN
- ADD_browser_ENDPOINT=minio:9000
- ADD_browser_PORT=80 # allow unencrypted connections
ports:
- "80:80"
- "443:443"
- "3306:3306"
- "9000:9000"
depends_on:
db:
condition: service_healthy
minio:
condition: service_healthy
app:
<<: *net
image: datajoint/pydev:${PY_VER}-alpine${ALPINE_VER}
depends_on:
fakeservices.datajoint.io:
condition: service_healthy
environment:
- DJ_HOST=fakeservices.datajoint.io
- DJ_USER=root
- DJ_PASS=simple
- DJ_TEST_HOST=fakeservices.datajoint.io
- DJ_TEST_USER=datajoint
- DJ_TEST_PASSWORD=datajoint
# If running tests locally, make sure to add entry in /etc/hosts for 127.0.0.1 fakeservices.datajoint.io
- S3_ENDPOINT=fakeservices.datajoint.io
- S3_ACCESS_KEY=datajoint
- S3_SECRET_KEY=datajoint
- S3_BUCKET=datajoint.test
- PYTHON_USER=dja
- JUPYTER_PASSWORD=datajoint
- DISPLAY
working_dir: /src
command: >
/bin/sh -c
"
pip install --user nose nose-cov coveralls flake8 ptvsd .;
pip freeze | grep datajoint;
## You may run the below tests once sh'ed into container i.e. docker exec -it datajoint-python_app_1 sh
# nosetests -vsw tests; #run all tests
# nosetests -vs --tests=tests.test_external_class:test_insert_and_fetch; #run specific basic test
# nosetests -vs --tests=tests.test_fetch:TestFetch.test_getattribute_for_fetch1; #run specific Class test
# flake8 datajoint --count --select=E9,F63,F7,F82 --show-source --statistics
# flake8 --ignore=E121,E123,E126,E226,E24,E704,W503,W504,E722,F401,W605 datajoint --count --max-complexity=62 --max-line-length=127 --statistics
## Interactive Jupyter Notebook environment
jupyter notebook &
## Remote debugger
while true;
do python -m ptvsd --host 0.0.0.0 --port 5678 --wait .;
sleep 2;
done;
"
ports:
- "8888:8888"
- "5678:5678"
user: ${UID}:${GID}
volumes:
- .:/src
- /tmp/.X11-unix:/tmp/.X11-unix:rw
# Additional mounted notebooks may go here
# - ./notebook:/home/dja/notebooks
# - ../dj-python-101/ch1:/home/dja/tutorials
networks:
main: