diff --git a/.dockerignore b/.dockerignore index 986d2b689..aef45340d 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,17 +1,13 @@ .circleci -node_modules +**/node_modules +**/dist test-queries .editorconfig -.gitignore -.git Contributing.md ISSUE_TEMPLATE.md lerna.json -LICENSE -package-lock.json -package.json +**/.env .env.example .eslintrc.json .mocharc.js -readme.md -.env \ No newline at end of file +readme.md \ No newline at end of file diff --git a/.gitignore b/.gitignore index 070faf2c8..646497bb0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,12 @@ -packages/server/node_modules +*node_modules packages/server/.env -packages/frontend/node_modules packages/frontend/dist -packages/viewer/node_modules packages/viewer/dist *.env .nyc_output coverage/ .vscode test-queries + +**/.DS_Store +.nvmrc diff --git a/Dockerfile b/Dockerfile index c988ef703..fb548aaba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,23 @@ -FROM node:12.20.1-alpine3.12@sha256:42998ae4420998ff3255fc2d6884e882bd32f06d45b057f4b042e33bf48a1240 as build +FROM node:14.15.4-alpine3.12@sha256:55bf28ea11b18fd914e1242835ea3299ec76f5a034e8c6e42b2ede70064e338c as node + +FROM node as build # Having multiple steps in builder doesn't increase the final image size # So having verbose steps for readability and caching should be the target -WORKDIR /opt +WORKDIR /opt/viewer +COPY packages/viewer/package*.json ./ +RUN npm install +COPY packages/viewer . +RUN npm run build +WORKDIR /opt/frontend # Copy package defs first they are the least likely to change # Keeping this order will least likely trigger full rebuild -COPY packages/frontend/package*.json frontend/ -RUN npm --prefix frontend ci frontend +COPY packages/frontend/package*.json ./ +RUN npm install ../viewer +RUN npm ci +WORKDIR /opt COPY packages/server/package*.json server/ ENV NODE_ENV production RUN npm --prefix server ci server @@ -21,9 +30,11 @@ COPY packages/frontend frontend WORKDIR /opt/frontend RUN npm run build -FROM node:12.20.1-alpine3.12@sha256:42998ae4420998ff3255fc2d6884e882bd32f06d45b057f4b042e33bf48a1240 +FROM node as runtime RUN apk add --no-cache tini=0.19.0-r0 +ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.7.3/wait /wait +RUN chmod +x /wait # Use a non-root user for increased security. USER node @@ -45,4 +56,4 @@ COPY --chown=node packages/server /home/node/server # Init for containers https://github.com/krallin/tini ENTRYPOINT [ "/sbin/tini", "--" ] -CMD ["node", "bin/www"] \ No newline at end of file +CMD /wait && node bin/www diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 000000000..cf7183ee4 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,60 @@ +version: "3" +services: + server: + build: + . + depends_on: + - database + - redis + ports: + - "3000:3000" + environment: + DEBUG: "speckle:*" + WAIT_HOSTS: database:5432, redis:6379 + env_file: + - .env + + database: + image: "postgres:13.1-alpine" # use the current alpine version for smaller image + environment: + POSTGRES_DB: + POSTGRES_USER: + POSTGRES_PASSWORD: + volumes: + # persist data even if container shuts down + - speckle-postgres-data:/var/lib/postgresql/data/ + ports: + - "5432:5432" + + pgadmin: + image: dpage/pgadmin4 + environment: + PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL} + PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD} + ports: + - "16543:80" + depends_on: + - database + + redis: + image: "redis:6.0-alpine" + ports: + - "6379:6379" # It is not neccesary to expose the reddis port if running the app with compose + volumes: + - redis_volume_data:/data + + redis_insight: + image: redislabs/redisinsight:latest + container_name: redis_insight + restart: always + depends_on: + - redis + ports: + - 8001:8001 + volumes: + - redis_insight_volume_data:/db + +volumes: + speckle-postgres-data: # named volumes can be managed easier using docker-compose + redis_volume_data: + redis_insight_volume_data: \ No newline at end of file diff --git a/packages/frontend/README.md b/packages/frontend/README.md index ed6f498c5..cedc15026 100644 --- a/packages/frontend/README.md +++ b/packages/frontend/README.md @@ -14,8 +14,12 @@ Notes: ## Project setup +The frontend now includes the viewer. Until we get to publish it as a separate module, there's a few extra steps: + +First, make sure you build the [Speckle Viewer](../viewer). Afterwards, run + ``` -npm install +lerna bootstrap ``` ### Compiles and hot-reloads for development diff --git a/packages/frontend/src/components/UserAvatarAuthoriseApp.vue b/packages/frontend/src/components/UserAvatarAuthoriseApp.vue new file mode 100644 index 000000000..f063d2977 --- /dev/null +++ b/packages/frontend/src/components/UserAvatarAuthoriseApp.vue @@ -0,0 +1,53 @@ + + diff --git a/packages/frontend/src/views/auth/AuthorizeApp.vue b/packages/frontend/src/views/auth/AuthorizeApp.vue index 17660a06d..ad97d5244 100644 --- a/packages/frontend/src/views/auth/AuthorizeApp.vue +++ b/packages/frontend/src/views/auth/AuthorizeApp.vue @@ -1,5 +1,8 @@