Add Dockerfiles and docker-compose
This commit is contained in:
parent
0d125071ef
commit
df4bcd9786
34
Dockerfile-admin
Normal file
34
Dockerfile-admin
Normal file
@ -0,0 +1,34 @@
|
||||
FROM golang:alpine as gobuild
|
||||
|
||||
RUN apk add --no-cache git
|
||||
|
||||
WORKDIR /go/src/srs.epita.fr/fic-server/admin
|
||||
|
||||
ADD settings ../settings/
|
||||
ADD frontend/time ../frontend/time/
|
||||
ADD libfic ../libfic/
|
||||
ADD admin/api ./api/
|
||||
ADD admin/pki ./pki/
|
||||
ADD admin/sync ./sync/
|
||||
ADD admin/*.go ./
|
||||
|
||||
RUN go get -d -v
|
||||
RUN go build -v
|
||||
|
||||
|
||||
FROM alpine
|
||||
|
||||
RUN apk add --no-cache openssl
|
||||
|
||||
EXPOSE 8081
|
||||
|
||||
WORKDIR /srv
|
||||
|
||||
ENTRYPOINT ["/srv/admin", "-bind=:8081", "-baseurl=/admin/"]
|
||||
|
||||
COPY --from=gobuild /go/src/srs.epita.fr/fic-server/admin/admin /srv/admin
|
||||
COPY admin/static/css/bootstrap.min.css frontend/static/css/glyphicon.css /srv/htdocs-admin/css/
|
||||
COPY frontend/static/fonts /srv/htdocs-admin/fonts
|
||||
COPY admin/static/img /srv/htdocs-admin/img
|
||||
COPY admin/static/views /srv/htdocs-admin/views
|
||||
COPY admin/static/js/app.js frontend/static/js/angular.min.js admin/static/js/angular-resource.min.js frontend/static/js/angular-route.min.js frontend/static/js/angular-sanitize.min.js frontend/static/js/bootstrap.min.js frontend/static/js/d3.v3.min.js frontend/static/js/i18n frontend/static/js/jquery.min.js frontend/static/js/popper.min.js /srv/htdocs-admin/js/
|
21
Dockerfile-backend
Normal file
21
Dockerfile-backend
Normal file
@ -0,0 +1,21 @@
|
||||
FROM golang:alpine as gobuild
|
||||
|
||||
RUN apk add --no-cache git
|
||||
|
||||
WORKDIR /go/src/srs.epita.fr/fic-server/backend
|
||||
|
||||
ADD backend/*.go ./
|
||||
ADD libfic ../libfic/
|
||||
ADD settings ../settings/
|
||||
|
||||
RUN go get -d -v
|
||||
RUN go build -v
|
||||
|
||||
|
||||
FROM alpine
|
||||
|
||||
WORKDIR /srv
|
||||
|
||||
ENTRYPOINT ["/srv/backend"]
|
||||
|
||||
COPY --from=gobuild /go/src/srs.epita.fr/fic-server/backend/backend /srv/backend
|
27
Dockerfile-frontend
Normal file
27
Dockerfile-frontend
Normal file
@ -0,0 +1,27 @@
|
||||
FROM golang:alpine as gobuild
|
||||
|
||||
RUN apk add --no-cache git
|
||||
|
||||
WORKDIR /go/src/srs.epita.fr/fic-server/frontend
|
||||
|
||||
ADD frontend/*.go ./
|
||||
ADD frontend/time ./time/
|
||||
ADD libfic ../libfic/
|
||||
ADD settings ../settings/
|
||||
|
||||
RUN go get -d -v
|
||||
RUN go build -v
|
||||
|
||||
|
||||
FROM alpine
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
WORKDIR /srv
|
||||
|
||||
ENTRYPOINT ["/srv/frontend", "--bind=:8080"]
|
||||
|
||||
VOLUME /srv/htdocs-frontend/
|
||||
|
||||
COPY --from=gobuild /go/src/srs.epita.fr/fic-server/frontend/frontend /srv/frontend
|
||||
COPY frontend/static /srv/htdocs-frontend
|
1
configs/nginx-fic.conf
Normal file
1
configs/nginx-fic.conf
Normal file
@ -0,0 +1 @@
|
||||
set $team 1;
|
186
configs/nginx-frontend-htpasswd.conf
Normal file
186
configs/nginx-frontend-htpasswd.conf
Normal file
@ -0,0 +1,186 @@
|
||||
server_tokens off;
|
||||
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;
|
||||
proxy_connect_timeout 1s;
|
||||
|
||||
server {
|
||||
listen 80 default;
|
||||
listen [::]:80 default;
|
||||
|
||||
root /srv/htdocs-frontend/;
|
||||
|
||||
error_page 401 /welcome.html;
|
||||
error_page 403 404 /e404.html;
|
||||
error_page 413 404 /e413.html;
|
||||
error_page 500 502 504 /e500.html;
|
||||
|
||||
location = / {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
}
|
||||
location = /index.html {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
}
|
||||
|
||||
location /edit {
|
||||
rewrite ^/.*$ /index.html;
|
||||
}
|
||||
location /rank {
|
||||
rewrite ^/.*$ /index.html;
|
||||
}
|
||||
location /register {
|
||||
rewrite ^/.*$ /index.html;
|
||||
}
|
||||
location ~ ^/[A-Z] {
|
||||
rewrite ^/.*$ /index.html;
|
||||
}
|
||||
|
||||
location /files/ {
|
||||
alias /srv/FILES/;
|
||||
tcp_nodelay on;
|
||||
}
|
||||
|
||||
location /wait.json {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
|
||||
include /etc/nginx/auth.conf;
|
||||
|
||||
root /srv/TEAMS/$team/;
|
||||
expires epoch;
|
||||
add_header Cache-Control no-cache;
|
||||
}
|
||||
location /public.json {
|
||||
root /srv/TEAMS/_public/;
|
||||
expires epoch;
|
||||
add_header Cache-Control no-cache;
|
||||
}
|
||||
location /stats.json {
|
||||
root /srv/TEAMS/;
|
||||
expires epoch;
|
||||
add_header Cache-Control no-cache;
|
||||
}
|
||||
location /my.json {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
|
||||
include /etc/nginx/auth.conf;
|
||||
|
||||
root /srv/TEAMS/$team/;
|
||||
expires epoch;
|
||||
add_header Cache-Control no-cache;
|
||||
|
||||
#if (!-f $document_root/../started) {
|
||||
# rewrite ^/ /wait.json;
|
||||
#}
|
||||
}
|
||||
location /settings.json {
|
||||
root /srv/TEAMS/;
|
||||
expires epoch;
|
||||
add_header Cache-Control no-cache;
|
||||
}
|
||||
location /teams.json {
|
||||
root /srv/TEAMS/;
|
||||
expires epoch;
|
||||
add_header Cache-Control no-cache;
|
||||
}
|
||||
location /themes.json {
|
||||
root /srv/TEAMS/;
|
||||
expires epoch;
|
||||
add_header Cache-Control no-cache;
|
||||
}
|
||||
|
||||
location /api/ {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
|
||||
if ($remote_user !~ "^nemunaire|bombal_s$") {
|
||||
return 403;
|
||||
}
|
||||
|
||||
proxy_pass http://localhost:8081/admin/api/;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host localhost;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
location /admin/ {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
|
||||
if ($remote_user !~ "^nemunaire|bombal_s$") {
|
||||
return 403;
|
||||
}
|
||||
|
||||
proxy_pass http://localhost:8081;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host localhost;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
location /submit/ {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
|
||||
include /etc/nginx/auth.conf;
|
||||
|
||||
rewrite ^/submit/(.*)$ /submission/$team/$1 break;
|
||||
|
||||
proxy_pass http://localhost:8080/;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host localhost;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
location /submit/name {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
|
||||
include /etc/nginx/auth.conf;
|
||||
|
||||
rewrite ^/submit/.*$ /chname/$team break;
|
||||
|
||||
proxy_pass http://localhost:8080/;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host localhost;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
location /openhint/ {
|
||||
#auth_basic "Secure Zone";
|
||||
#auth_basic_user_file ficpasswd;
|
||||
|
||||
include /etc/nginx/auth.conf;
|
||||
|
||||
rewrite ^/openhint/(.*)$ /openhint/$team/$1 break;
|
||||
|
||||
proxy_pass http://localhost:8080/;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host localhost;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
location = /time.json {
|
||||
proxy_pass http://localhost:8080/time.json;
|
||||
proxy_method GET;
|
||||
proxy_pass_request_body off;
|
||||
proxy_set_header Content-Length "";
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host localhost;
|
||||
proxy_redirect off;
|
||||
proxy_cache STATIC;
|
||||
proxy_cache_valid 1s;
|
||||
}
|
||||
|
||||
location = /events.json {
|
||||
proxy_pass http://localhost:8081/api/events/;
|
||||
proxy_method GET;
|
||||
proxy_pass_request_body off;
|
||||
proxy_set_header Content-Length "";
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host localhost;
|
||||
proxy_redirect off;
|
||||
proxy_cache STATIC;
|
||||
proxy_cache_valid 3s;
|
||||
}
|
||||
}
|
89
docker-compose.yml
Normal file
89
docker-compose.yml
Normal file
@ -0,0 +1,89 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mariadb
|
||||
volumes:
|
||||
- mysql-data:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=toto
|
||||
- MYSQL_DATABASE=fic
|
||||
- MYSQL_USER=fic
|
||||
- MYSQL_PASSWORD=fic
|
||||
|
||||
fic-admin:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile-admin
|
||||
image: nemunaire/fic-admin:latest
|
||||
ports:
|
||||
- "8081:8081"
|
||||
links:
|
||||
- mysql
|
||||
volumes:
|
||||
- /mnt/fic:/mnt/fic:ro
|
||||
- files:/srv/FILES
|
||||
- pki:/srv/PKI
|
||||
- settings:/srv/SETTINGS
|
||||
- teams:/srv/TEAMS
|
||||
command: --baseurl /admin/ -localimport /mnt/fic -localimportsymlink
|
||||
depends_on:
|
||||
- mysql
|
||||
environment:
|
||||
- MYSQL_HOST=tcp(mysql:3306)
|
||||
|
||||
fic-backend:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile-backend
|
||||
image: nemunaire/fic-backend:latest
|
||||
links:
|
||||
- mysql
|
||||
volumes:
|
||||
- files:/srv/FILES
|
||||
- teams:/srv/TEAMS
|
||||
- settings:/srv/SETTINGS
|
||||
- submissions:/srv/submissions
|
||||
depends_on:
|
||||
- mysql
|
||||
environment:
|
||||
- MYSQL_HOST=tcp(mysql:3306)
|
||||
|
||||
fic-frontend:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile-frontend
|
||||
image: nemunaire/fic-frontend:latest
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- htdocs:/srv/htdocs-frontend
|
||||
- files:/srv/FILES:ro
|
||||
- teams:/srv/TEAMS:ro
|
||||
- settings:/srv/SETTINGS
|
||||
- submissions:/srv/submissions
|
||||
depends_on:
|
||||
- fic-backend
|
||||
|
||||
front:
|
||||
image: nginx:latest
|
||||
ports:
|
||||
- "8042:80"
|
||||
volumes:
|
||||
- ./configs/nginx-frontend-htpasswd.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
- ./configs/nginx-fic.conf:/etc/nginx/auth.conf:ro
|
||||
- htdocs:/srv/htdocs-frontend:ro
|
||||
- files:/srv/FILES:ro
|
||||
- teams:/srv/TEAMS:ro
|
||||
depends_on:
|
||||
- fic-frontend
|
||||
- fic-admin
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
files:
|
||||
htdocs:
|
||||
pki:
|
||||
settings:
|
||||
submissions:
|
||||
teams:
|
Loading…
x
Reference in New Issue
Block a user