mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
			
			
				Browse Source
			
			
			
			
				
		* Simplify project setup * Setup docker * Add seed * Feature/migrate links to router link (#2) * Migrate links to RouterLink * Add i18n * Simplify project setup * Setup docker * Add seedpull/4/head
							committed by
							
								 GitHub
								GitHub
							
						
					
				
				 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