From c95135bb1982af4b2bd9e71237b695b16300649d Mon Sep 17 00:00:00 2001 From: Wu Han Date: Sun, 20 Dec 2020 21:29:22 +0000 Subject: [PATCH] [new] Support docker --- .dockerignore | 2 ++ .gitignore | 3 ++- Dockerfile | 14 ++++++++++++++ README.md | 1 + docker-compose.yml | 25 +++++++++++++++++++++++++ server.js | 10 ++++++---- 6 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 README.md diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..35e652f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +node_modules/ +leaderboard.json \ No newline at end of file diff --git a/.gitignore b/.gitignore index 35e652f..6e4d1ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules/ -leaderboard.json \ No newline at end of file +leaderboard.json +uploads/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..16dbc76 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM node:lts-alpine3.12 +ENV NODE_ENV=production + +WORKDIR /app + +COPY ["package.json", "package-lock.json*", "./"] + +RUN npm install --production + +COPY . . + +EXPOSE 8080 + +CMD [ "node", "server.js" ] diff --git a/README.md b/README.md new file mode 100644 index 0000000..2b921fd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +docker container run -d -p 80:8080 -v /var/run/docker.sock:/var/run/docker.sock -v /uploads/:/app/uploads/ -v /output/:/app/output/ com2014-server diff --git a/docker-compose.yml b/docker-compose.yml index e69de29..d9cfae9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3' +services: + com2014: + image: com2014-server + networks: + - traefik-public + deploy: + labels: + - "traefik.enable=true" + - "traefik.http.routers.com2014.rule=Host(`com2014.trustai.uk`)" + - "traefik.http.routers.com2014.entrypoints=web" + - "traefik.http.services.com2014.loadbalancer.server.port=80" + # TLS + - "traefik.http.routers.com2014s.rule=Host(`com2014.trustai.uk`)" + - "traefik.http.routers.com2014s.entrypoints=websecure" + - "traefik.http.routers.com2014s.tls.certresolver=myhttpchallenge" + # Redirect + - "traefik.http.routers.com2014.middlewares=https_redirect" + - "traefik.http.middlewares.https_redirect.redirectscheme.scheme=https" + placement: + constraints: + - node.role == worker +networks: + traefik-public: + external: true \ No newline at end of file diff --git a/server.js b/server.js index 489ca7b..f147522 100644 --- a/server.js +++ b/server.js @@ -185,8 +185,9 @@ var docker_build = (socket, sessionID) => { Image: 'com2014-tsp', HostConfig: { Binds: [ - current_path.toString() + '/uploads/' + sessionID.toString() + '/requirements.txt:/tsp/requirements.txt', - current_path.toString() + "/output/" + sessionID.toString() + ":/output" + '/uploads/' + sessionID.toString() + '/requirements.txt:/tsp/requirements.txt', + '/uploads/' + sessionID.toString() + '/my_model.py:/tsp/model/my_model.py', + "/output/" + sessionID.toString() + "/:/output/" ] } }) @@ -212,7 +213,8 @@ var docker_build = (socket, sessionID) => { Image: 'com2014-tsp', HostConfig: { Binds: [ - current_path.toString() + "/output/" + sessionID.toString() + ":/output" + '/uploads/' + sessionID.toString() + '/my_model.py:/tsp/model/my_model.py', + "/output/" + sessionID.toString() + "/:/output/" ] } }) @@ -308,7 +310,7 @@ io.on('connection', (socket) => { require('./app/routers/file.router.js')(app, router, upload) // Create a Server -var server = http.listen(8081, () => { +var server = http.listen(8080, () => { var host = server.address().address var port = server.address().port