강동현
Builds for 1 pipeline failed in 1 minute 12 seconds

Merge branch 'feature/environment' into develop

...@@ -13,20 +13,7 @@ Test Server: ...@@ -13,20 +13,7 @@ Test Server:
13 - yarn install 13 - yarn install
14 - yarn test 14 - yarn test
15 15
16 -Build Server: 16 +Build:
17 stage: build 17 stage: build
18 script: 18 script:
19 - - cd common 19 + - HOST=2020105578.oss2021.tk SSL_CERT=/etc/letsencrypt/live/2020105578.oss2021.tk/cert.pem SSL_KEY=/etc/letsencrypt/live/2020105578.oss2021.tk/privkey.pem SSL_CA=/etc/letsencrypt/live/2020105578.oss2021.tk/fullchain.pem docker-compose build --no-cache
20 - - yarn install
21 - - cd ../server
22 - - yarn install
23 - - yarn build
24 -
25 -Build Web:
26 - stage: build
27 - script:
28 - - cd common
29 - - yarn install
30 - - cd ../web
31 - - npm install
32 - - npm build
......
...@@ -10,11 +10,20 @@ services: ...@@ -10,11 +10,20 @@ services:
10 - "3000:3000" 10 - "3000:3000"
11 volumes: 11 volumes:
12 - /etc/letsencrypt:/etc/letsencrypt 12 - /etc/letsencrypt:/etc/letsencrypt
13 + environment:
14 + - SSL_CERT=${SSL_CERT}
15 + - SSL_KEY=${SSL_KEY}
16 + - SSL_CA=${SSL_CA}
13 17
14 web: 18 web:
15 build: 19 build:
16 context: . 20 context: .
17 dockerfile: ./web/Dockerfile 21 dockerfile: ./web/Dockerfile
22 + args:
23 + - HOST=${HOST}
24 + - SSL_CERT=${SSL_CERT}
25 + - SSL_KEY=${SSL_KEY}
26 + - SSL_CA=${SSL_CA}
18 restart: unless-stopped 27 restart: unless-stopped
19 ports: 28 ports:
20 - "443:443" 29 - "443:443"
......
...@@ -18,4 +18,6 @@ RUN yarn build ...@@ -18,4 +18,6 @@ RUN yarn build
18 18
19 EXPOSE 3000 19 EXPOSE 3000
20 20
21 +ENV NODE_ENV production
22 +
21 CMD [ "node", "dist/server/index.js" ] 23 CMD [ "node", "dist/server/index.js" ]
......
1 import express from "express"; 1 import express from "express";
2 import socketIo, { Server as IoServer } from "socket.io"; 2 import socketIo, { Server as IoServer } from "socket.io";
3 -import { createServer } from "https"; 3 +import { createServer as createServerHttps } from "https";
4 +import { createServer as createServerHttp } from "http";
4 import { RoomManager } from "./room/RoomManager"; 5 import { RoomManager } from "./room/RoomManager";
5 import { Connection } from "./connection/Connection"; 6 import { Connection } from "./connection/Connection";
6 import { SocketIoWrapper } from "./connection/SocketWrapper"; 7 import { SocketIoWrapper } from "./connection/SocketWrapper";
...@@ -13,21 +14,22 @@ export class Server { ...@@ -13,21 +14,22 @@ export class Server {
13 constructor(port: number) { 14 constructor(port: number) {
14 this.port = port; 15 this.port = port;
15 16
17 + console.log(`Running in ${process.env.NODE_ENV} mode.`);
18 +
16 const app = express(); 19 const app = express();
17 - const server = createServer( 20 + let server;
21 + if (process.env.NODE_ENV === "development") {
22 + server = createServerHttp(app);
23 + } else {
24 + server = createServerHttps(
18 { 25 {
19 - cert: readFileSync( 26 + cert: readFileSync(process.env.SSL_CERT as string),
20 - "/etc/letsencrypt/live/2020105578.oss2021.tk/cert.pem" 27 + key: readFileSync(process.env.SSL_KEY as string),
21 - ), 28 + ca: readFileSync(process.env.SSL_CA as string),
22 - key: readFileSync(
23 - "/etc/letsencrypt/live/2020105578.oss2021.tk/privkey.pem"
24 - ),
25 - ca: readFileSync(
26 - "/etc/letsencrypt/live/2020105578.oss2021.tk/fullchain.pem"
27 - ),
28 }, 29 },
29 app 30 app
30 ); 31 );
32 + }
31 this.io = new socketIo.Server(server, { 33 this.io = new socketIo.Server(server, {
32 cors: { 34 cors: {
33 origin: "*", 35 origin: "*",
......
1 import { Server } from "./Server"; 1 import { Server } from "./Server";
2 2
3 +process.env.NODE_ENV =
4 + process.env.NODE_ENV &&
5 + process.env.NODE_ENV.trim().toLowerCase() == "production"
6 + ? "production"
7 + : "development";
8 +
3 new Server(3000); 9 new Server(3000);
......
...@@ -16,7 +16,18 @@ RUN yarn build ...@@ -16,7 +16,18 @@ RUN yarn build
16 16
17 FROM nginx:latest 17 FROM nginx:latest
18 18
19 -COPY web/default.conf /etc/nginx/conf.d/default.conf 19 +ARG HOST
20 +ENV HOST ${HOST}
21 +ARG SSL_CERT
22 +ENV SSL_CERT ${SSL_CERT}
23 +ARG SSL_KEY
24 +ENV SSL_KEY ${SSL_KEY}}
25 +ARG SSL_CA
26 +ENV SSL_CA ${SSL_CA}}
27 +
28 +COPY web/default.conf /etc/nginx/conf.d/default_temp
29 +RUN envsubst < /etc/nginx/conf.d/default_temp > /etc/nginx/conf.d/default.conf
30 +
20 COPY --from=build /usr/web/build /usr/web/build 31 COPY --from=build /usr/web/build /usr/web/build
21 32
22 EXPOSE 443 33 EXPOSE 443
......
...@@ -5,10 +5,10 @@ server { ...@@ -5,10 +5,10 @@ server {
5 5
6 server { 6 server {
7 listen 443 ssl default_server; 7 listen 443 ssl default_server;
8 - server_name 2020105578.oss2021.tk; 8 + server_name $HOST;
9 9
10 - ssl_certificate /etc/letsencrypt/live/2020105578.oss2021.tk/fullchain.pem; 10 + ssl_certificate $SSL_CA;
11 - ssl_certificate_key /etc/letsencrypt/live/2020105578.oss2021.tk/privkey.pem; 11 + ssl_certificate_key $SSL_KEY;
12 12
13 location / { 13 location / {
14 root /usr/web/build; 14 root /usr/web/build;
......
1 import React from "react"; 1 import React from "react";
2 import { io } from "socket.io-client"; 2 import { io } from "socket.io-client";
3 3
4 -export const socket = io(`https://${window.location.hostname}:3000/`); 4 +export const socket = io(
5 + `${window.location.protocol}//${window.location.hostname}:3000/`
6 +);
5 const SocketContext = React.createContext(socket); 7 const SocketContext = React.createContext(socket);
6 8
7 export const SocketProvider = SocketContext.Provider; 9 export const SocketProvider = SocketContext.Provider;
......