forked from sfproductlabs/tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
71 lines (56 loc) · 2.49 KB
/
Dockerfile
File metadata and controls
71 lines (56 loc) · 2.49 KB
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
####################################################################################
# Tracker
# Build with: sudo docker build -t tracker .
####################################################################################
FROM debian:latest
WORKDIR /app/tracker
ADD . /app/tracker
EXPOSE 443
EXPOSE 80
####################################################################################
# ulimit incrase (set in docker templats/aws ecs-task-definition too!!)
RUN bash -c 'echo "root hard nofile 16384" >> /etc/security/limits.conf' \
&& bash -c 'echo "root soft nofile 16384" >> /etc/security/limits.conf' \
&& bash -c 'echo "* hard nofile 16384" >> /etc/security/limits.conf' \
&& bash -c 'echo "* soft nofile 16384" >> /etc/security/limits.conf'
# ip/tcp tweaks, disable ipv6
RUN bash -c 'echo "net.core.somaxconn = 8192" >> /etc/sysctl.conf' \
&& bash -c 'echo "net.ipv4.tcp_max_tw_buckets = 1440000" >> /etc/sysctl.conf' \
&& bash -c 'echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf' \
&& bash -c 'echo "net.ipv4.ip_local_port_range = 5000 65000" >> /etc/sysctl.conf' \
&& bash -c 'echo "net.ipv4.tcp_fin_timeout = 15" >> /etc/sysctl.conf' \
&& bash -c 'echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf' \
&& bash -c 'echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf' \
&& bash -c 'echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf' \
&& bash -c 'echo "fs.file-max=65536" >> /etc/sysctl.conf'
####################################################################################
# update packages and install required ones
RUN apt update && apt upgrade -y && apt install -y \
golang \
supervisor \
git \
libssl-dev \
python-pip \
jq \
sudo
# apt cleanup
RUN apt autoclean -y && apt autoremove -y
# install latest AWS CLI
RUN pip install awscli --upgrade
# build app in production mode
RUN go get github.com/dioptre/tracker
RUN go install github.com/dioptre/tracker
RUN go build
####################################################################################
# add host if not using aws
#RUN echo "192.168.0.222 nats-seed1" >> /etc/hosts
# copy files to other locations
COPY supervisord.conf /etc/supervisor/supervisord.conf
COPY tracker.supervisor.conf /etc/supervisor/conf.d/tracker.supervisor.conf
# make startup script executable
RUN chmod +x dockercmd.sh
####################################################################################
# startup command
CMD ./dockercmd.sh
#sudo docker build -t tracker .
#sudo docker run -p 443:443 -p 80:80 tracker