mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
				 9 changed files with 66 additions and 127 deletions
			
			
		@ -1,9 +0,0 @@ | 
				
			|||
FROM node:14 | 
				
			|||
 | 
				
			|||
# Create app directory | 
				
			|||
WORKDIR /app | 
				
			|||
 | 
				
			|||
COPY . . | 
				
			|||
 | 
				
			|||
EXPOSE 3333 | 
				
			|||
CMD [ "npm", "run", "start:prod" ] | 
				
			|||
@ -0,0 +1,53 @@ | 
				
			|||
import { Currency, PrismaClient, Role, Type } from '@prisma/client'; | 
				
			|||
const prisma = new PrismaClient(); | 
				
			|||
 | 
				
			|||
async function main() { | 
				
			|||
  const admin = await prisma.user.upsert({ | 
				
			|||
    create: { | 
				
			|||
      accessToken: | 
				
			|||
        'c689bcc894e4a420cb609ee34271f3e07f200594f7d199c50d75add7102889eb60061a04cd2792ebc853c54e37308271271e7bf588657c9e0c37faacbc28c3c6', | 
				
			|||
      alias: 'Admin', | 
				
			|||
      id: '4e1af723-95f6-44f8-92a7-464df17f6ec3', | 
				
			|||
      role: Role.ADMIN | 
				
			|||
    }, | 
				
			|||
    update: {}, | 
				
			|||
    where: { id: '4e1af723-95f6-44f8-92a7-464df17f6ec3' } | 
				
			|||
  }); | 
				
			|||
 | 
				
			|||
  const demo = await prisma.user.upsert({ | 
				
			|||
    create: { | 
				
			|||
      accessToken: | 
				
			|||
        'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjliMTEyYjRkLTNiN2QtNGJhZC05YmRkLTNiMGY3YjRkYWMyZiIsImlhdCI6MTYxODUxMjAxNCwiZXhwIjoxNjIxMTA0MDE0fQ.l3WUxpI0hxuQtdPrD0kd7sem6S2kx_7CrdNvkmlKuWw', | 
				
			|||
      alias: 'Demo', | 
				
			|||
      id: '9b112b4d-3b7d-4bad-9bdd-3b0f7b4dac2f', | 
				
			|||
      role: Role.DEMO, | 
				
			|||
      Order: { | 
				
			|||
        create: [ | 
				
			|||
          { | 
				
			|||
            currency: Currency.USD, | 
				
			|||
            date: new Date(Date.UTC(2017, 0, 3, 0, 0, 0)), | 
				
			|||
            fee: 30, | 
				
			|||
            id: 'cf7c0418-8535-4089-ae3d-5dbfa0aec2e1', | 
				
			|||
            quantity: 50, | 
				
			|||
            symbol: 'TSLA', | 
				
			|||
            type: Type.BUY, | 
				
			|||
            unitPrice: 42.97 | 
				
			|||
          } | 
				
			|||
        ] | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
    update: {}, | 
				
			|||
    where: { id: '9b112b4d-3b7d-4bad-9bdd-3b0f7b4dac2f' } | 
				
			|||
  }); | 
				
			|||
 | 
				
			|||
  console.log({ admin, demo }); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
main() | 
				
			|||
  .catch((e) => { | 
				
			|||
    console.error(e); | 
				
			|||
    process.exit(1); | 
				
			|||
  }) | 
				
			|||
  .finally(async () => { | 
				
			|||
    await prisma.$disconnect(); | 
				
			|||
  }); | 
				
			|||
@ -1,89 +0,0 @@ | 
				
			|||
import * as dotenv from 'dotenv'; | 
				
			|||
import * as path from 'path'; | 
				
			|||
 | 
				
			|||
const replace = require('replace-in-file'); | 
				
			|||
const version = require(path.resolve(__dirname, '..', 'package.json')).version; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * Creates a docker image | 
				
			|||
 */ | 
				
			|||
class Dockerizer { | 
				
			|||
  /** | 
				
			|||
   * @constructor | 
				
			|||
   */ | 
				
			|||
  constructor() { | 
				
			|||
    dotenv.config({ | 
				
			|||
      path: path.resolve(__dirname, '..', '.env') | 
				
			|||
    }); | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  public async dockerize(aVersion: string) { | 
				
			|||
    console.log('Dockerizing...'); | 
				
			|||
 | 
				
			|||
    console.log('Version:', aVersion); | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand('rm -rf ./dist'); | 
				
			|||
 | 
				
			|||
    console.log(`Building source...`); | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand('ng build --prod api'); | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand('ng build --prod client'); | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand('yarn run replace-placeholders-in-build'); | 
				
			|||
 | 
				
			|||
    console.log(`Copying files...`); | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand(`mkdir -p ./docker/${aVersion}`); | 
				
			|||
    await this.executeShellCommand(`cp -r ./dist/ ./docker/${aVersion}`); | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand(`mkdir ./docker/${aVersion}/prisma`); | 
				
			|||
    await this.executeShellCommand( | 
				
			|||
      `cp -r ./prisma/schema.prisma ./docker/${aVersion}/prisma/schema.prisma` | 
				
			|||
    ); | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand( | 
				
			|||
      `cp ./docker-compose.yml ./docker/${aVersion}` | 
				
			|||
    ); | 
				
			|||
 | 
				
			|||
    try { | 
				
			|||
      replace.sync({ | 
				
			|||
        allowEmptyPaths: false, | 
				
			|||
        files: `./docker/${aVersion}/docker-compose.yml`, | 
				
			|||
        from: /{{VERSION}}/g, | 
				
			|||
        to: aVersion | 
				
			|||
      }); | 
				
			|||
    } catch (error) { | 
				
			|||
      console.error('Error while replacing docker-compose.yml:', error); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand(`cp ./Dockerfile ./docker/${aVersion}`); | 
				
			|||
    await this.executeShellCommand(`cp ./package.json ./docker/${aVersion}`); | 
				
			|||
    await this.executeShellCommand(`cp ./yarn.lock ./docker/${aVersion}`); | 
				
			|||
 | 
				
			|||
    await this.executeShellCommand( | 
				
			|||
      `cd docker/${aVersion} && yarn install --production` | 
				
			|||
    ); | 
				
			|||
 | 
				
			|||
    console.log('Dockerizing has been completed successfully.'); | 
				
			|||
  } | 
				
			|||
 | 
				
			|||
  /** | 
				
			|||
   * Executes a shell command and return it as a promise | 
				
			|||
   */ | 
				
			|||
  private executeShellCommand(cmd: string) { | 
				
			|||
    const exec = require('child_process').exec; | 
				
			|||
    return new Promise((resolve, reject) => { | 
				
			|||
      // Maximum buffer size increased to 1000 * 1000KB
 | 
				
			|||
      exec(cmd, { maxBuffer: 1000 * 1024 * 1000 }, (error, stdout, stderr) => { | 
				
			|||
        if (error) { | 
				
			|||
          console.warn(error); | 
				
			|||
        } | 
				
			|||
        resolve(stdout ? stdout : stderr); | 
				
			|||
      }); | 
				
			|||
    }); | 
				
			|||
  } | 
				
			|||
} | 
				
			|||
 | 
				
			|||
const dockerizer = new Dockerizer(); | 
				
			|||
dockerizer.dockerize(version); | 
				
			|||
					Loading…
					
					
				
		Reference in new issue