Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Comments

Use pm2 in production docker image#1331

Merged
sarayourfriend merged 1 commit intomainfrom
add/pm2-docker-target
May 10, 2022
Merged

Use pm2 in production docker image#1331
sarayourfriend merged 1 commit intomainfrom
add/pm2-docker-target

Conversation

@sarayourfriend
Copy link
Contributor

@sarayourfriend sarayourfriend commented Apr 26, 2022

Description

This PR runs the application in Docker with pm2.

We do this so we can get the benefits of cluster mode as described here: https://pm2.keymetrics.io/docs/usage/cluster-mode/

Our current production deployment already uses pm2, so this is making our docker file inline with the production configuration (and therefore production ready for a dockerfied deployment).

Testing Instructions

If you're on a Mac or Windows PC then you probably won't be able to build the image. In that case, wait until the docker image push action is finished and use the image from GHCR.

If you're on Linux (or WSL) you build the image locally following the instructions in the README:

docker build . --build-arg PNPM_VERSION=$(cat .pnpm-version) -t openverse-frontend:latest

The run docker run -it -p 127.0.0.1:8443:8443/tcp openverse-frontend:latest and verify that you can access the app locally on port 8443.

If you're running the version from GHCR, replace openverse-frontend:latest in the run command above with the full ghcr.io/wordpress/openverse-frontend:sha-{commit} tag that is generated by the action. You can find the full image name at the end of the action output.

Checklist

  • My pull request has a descriptive title (not a vague title like Update index.md).
  • My pull request targets the default branch of the repository (main) or a parent feature branch.
  • My commit messages follow best practices.
  • My code follows the established code style of the repository.
  • [N/A] I added or updated tests for the changes I made (if applicable).
  • I added or updated documentation (if applicable).
  • I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@sarayourfriend sarayourfriend added 🟩 priority: low Low priority and doesn't need to be rushed 💻 aspect: code Concerns the software code in the repository 🧰 goal: internal improvement Improvement that benefits maintainers, not users labels Apr 26, 2022
@sarayourfriend sarayourfriend requested a review from a team as a code owner April 26, 2022 09:44
@sarayourfriend
Copy link
Contributor Author

@WordPress/openverse-developers can y'all take a look at this and see if it makes sense and works for you? It's a necessary step for getting our production deployment to use docker.

Copy link
Contributor

@AetherUnbound AetherUnbound left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I tried building locally, I got:

Peer dependencies that should be installed:
  @babel/core@">=7.11.0 <8.0.0"
  @nuxt/vue-app@^2.15
  @testing-library/dom@>=7.21.4
  @types/node@"*"
  babel-loader@">=8.0.0 <9.0.0"
  consola@"*"
  react-dom@">=16.8.0 <17.0.0 || >=17.0.1 <18.0.0"
  react@">=16.13.1 <17.0.0 || >=17.0.1 <18.0.0"
  vue-template-compiler@">=2.6.10 <3.0.0"
  vue@">=3.0.0-0 <3.0.0 || >=2.6.14 <3.0.0"
  webpack@">=4.36.0 <5.0.0 || >=5.0.0-0 <5.0.0 || >=5.0.0 <6.0.0"

The command '/bin/sh -c pnpm install --store=pnpm-store' returned a non-zero code: 1

Also you may need to add a . at the end of the suggested build command, when I tried to run that directly Docker complained there were no arguments.

Dockerfile Outdated
Comment on lines 24 to 30
COPY src /usr/app/src
COPY typings /usr/app/typings
COPY nuxt-template-overrides /usr/app/nuxt-template-overrides
COPY tsconfig.json /usr/app/tsconfig.json
COPY nuxt.config.ts /usr/app/nuxt.config.ts
COPY tailwind.config.js /usr/app/tailwind.config.js
COPY tailwind.safelist.txt /usr/app/tailwind.safelist.txt
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be easier to specify a .dockerignore file with explicit allow statements and just run COPY . /usr/app? That's what we do in the API

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably!

@sarayourfriend
Copy link
Contributor Author

@AetherUnbound Are you using BuildKit by any chance? And if not, did you notice if it failed during the dev target?

@AetherUnbound
Copy link
Contributor

Here's the full logs:

Error Log
docker build -t openverse-frontend:latest --target=app .
Sending build context to Docker daemon  43.06MB
Step 1/47 : FROM node:16 AS builder
16: Pulling from library/node
85bed84afb9a: Pull complete 
5fdd409f4b2b: Pull complete 
fa3069e6cecf: Pull complete 
4ee16f45eff9: Pull complete 
2cee68386155: Pull complete 
0aa7befa4a1b: Pull complete 
d89fa2ee2a9e: Pull complete 
fea81c9d708c: Pull complete 
69c8c6687712: Pull complete 
Digest: sha256:a6c217d7c8f001dc6fc081d55c2dd7fb3fefe871d5aa7be9c0c16bd62bea8e0c
Status: Downloaded newer image for node:16
 ---> 74b4ba5546c1
Step 2/47 : WORKDIR /usr/app
 ---> Running in d421860ae839
Removing intermediate container d421860ae839
 ---> 78ed4c6d0363
Step 3/47 : ARG API_URL
 ---> Running in 9a48f3255f1c
Removing intermediate container 9a48f3255f1c
 ---> 611aad70edc6
Step 4/47 : RUN npm install -g pnpm
 ---> Running in b5c6a63a69ea

added 1 package, and audited 2 packages in 675ms

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice 
npm notice New minor version of npm available! 8.5.5 -> 8.9.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v8.9.0>
npm notice Run `npm install -g npm@8.9.0` to update!
npm notice 
Removing intermediate container b5c6a63a69ea
 ---> 0f616f4ac751
Step 5/47 : COPY package.json .
 ---> 7c30520523f1
Step 6/47 : COPY pnpm-lock.yaml .
 ---> 5f447f08f9c9
Step 7/47 : COPY .npmrc .
 ---> a2f7ab03f678
Step 8/47 : RUN pnpm install --store=pnpm-store
 ---> Running in 496fc154ffe8
Progress: resolved 1, reused 0, downloaded 0, added 0
Progress: resolved 51, reused 0, downloaded 49, added 0
 WARN  deprecated build-url@6.0.1: This package is no longer maintained
Progress: resolved 93, reused 0, downloaded 91, added 0
Progress: resolved 194, reused 0, downloaded 187, added 0
Progress: resolved 308, reused 0, downloaded 298, added 0
Progress: resolved 444, reused 0, downloaded 435, added 0
 WARN  deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
 WARN  deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
Progress: resolved 606, reused 0, downloaded 598, added 0
 WARN  deprecated svgo@1.3.2: This SVGO version is no longer supported. Upgrade to v2.x.x.
 WARN  deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
 WARN  deprecated @types/browserslist@4.15.0: This is a stub types definition. browserslist provides its own type definitions, so you do not need this installed.
 WARN  deprecated @types/anymatch@3.0.0: This is a stub types definition. anymatch provides its own type definitions, so you do not need this installed.
Progress: resolved 751, reused 0, downloaded 742, added 0
Progress: resolved 875, reused 0, downloaded 862, added 0
Progress: resolved 1020, reused 0, downloaded 1015, added 0
 WARN  deprecated sane@4.1.0: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
 WARN  deprecated core-js@2.6.12: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
 WARN  deprecated core-js@2.6.12: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
Progress: resolved 1175, reused 0, downloaded 1168, added 0
 WARN  deprecated querystring@0.2.1: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
Progress: resolved 1343, reused 0, downloaded 1332, added 0
 WARN  deprecated querystring@0.2.1: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
Progress: resolved 1480, reused 0, downloaded 1470, added 0
 WARN  deprecated @npmcli/fs@1.1.0: this version had an improper engines field added, update to 1.1.1
Progress: resolved 1640, reused 0, downloaded 1634, added 0
Progress: resolved 1785, reused 0, downloaded 1774, added 0
Progress: resolved 1906, reused 0, downloaded 1889, added 0
 WARN  deprecated svgo@1.3.2: This SVGO version is no longer supported. Upgrade to v2.x.x.
 WARN  deprecated flatten@1.0.3: flatten is deprecated in favor of utility frameworks such as lodash.
 WARN  deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
Progress: resolved 2083, reused 0, downloaded 2074, added 0
 WARN  deprecated chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
 WARN  deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
 WARN  deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
Packages: +2275
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 2181, reused 0, downloaded 2175, added 0
Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /usr/app/pnpm-store/v3
  Virtual store is at:             node_modules/.pnpm
Progress: resolved 2181, reused 0, downloaded 2178, added 703
Progress: resolved 2181, reused 0, downloaded 2179, added 2275, done
.../core-js@2.6.12/node_modules/core-js postinstall$ node -e "try{require('./postinstall')}catch(e){}"
.../core-js@3.21.1/node_modules/core-js postinstall$ node -e "try{require('./postinstall')}catch(e){}"
.../node_modules/core-js-pure postinstall$ node -e "try{require('./postinstall')}catch(e){}"
.../core-js@2.6.12/node_modules/core-js postinstall: Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
.../core-js@2.6.12/node_modules/core-js postinstall: The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
.../core-js@2.6.12/node_modules/core-js postinstall: > https://opencollective.com/core-js 
.../core-js@2.6.12/node_modules/core-js postinstall: > https://www.patreon.com/zloirock 
.../core-js@2.6.12/node_modules/core-js postinstall: Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
.../core-js@2.6.12/node_modules/core-js postinstall: Done
.../deasync@0.1.24/node_modules/deasync install$ node ./build.js
.../node_modules/core-js-pure postinstall: Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
.../node_modules/core-js-pure postinstall: The project needs your help! Please consider supporting of core-js:
.../node_modules/core-js-pure postinstall: > https://opencollective.com/core-js 
.../node_modules/core-js-pure postinstall: > https://patreon.com/zloirock 
.../node_modules/core-js-pure postinstall: > https://paypal.me/zloirock 
.../node_modules/core-js-pure postinstall: > bitcoin: bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz 
.../node_modules/core-js-pure postinstall: Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
.../core-js@3.21.1/node_modules/core-js postinstall: Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
.../core-js@3.21.1/node_modules/core-js postinstall: The project needs your help! Please consider supporting of core-js:
.../core-js@3.21.1/node_modules/core-js postinstall: > https://opencollective.com/core-js 
.../core-js@3.21.1/node_modules/core-js postinstall: > https://patreon.com/zloirock 
.../core-js@3.21.1/node_modules/core-js postinstall: > https://paypal.me/zloirock 
.../core-js@3.21.1/node_modules/core-js postinstall: > bitcoin: bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz 
.../core-js@3.21.1/node_modules/core-js postinstall: Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
.../node_modules/core-js-pure postinstall: Done
.../core-js@3.21.1/node_modules/core-js postinstall: Done
.../deasync@0.1.24/node_modules/deasync install: `linux-x64-node-16` exists; testing
.../node_modules/@sentry/cli install$ node scripts/install.js
.../deasync@0.1.24/node_modules/deasync install: Binary is fine; exiting
.../deasync@0.1.24/node_modules/deasync install: Done
.../node_modules/@sentry/cli install: info sentry-cli Downloading from https://downloads.sentry-cdn.com/sentry-cli/1.71.0/sentry-cli-Linux-x86_64
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 1%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 2%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 3%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 4%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 5%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 6%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 7%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 8%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 9%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 10%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 11%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 12%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 13%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 14%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 15%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 16%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 17%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 18%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 19%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 20%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 21%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 22%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 23%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 24%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 25%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 26%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 27%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 28%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 29%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 30%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 31%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 32%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 33%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 34%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 35%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 36%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 37%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 38%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 39%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 40%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 41%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 42%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 43%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 44%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 45%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 46%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 47%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 48%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 49%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 50%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 51%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 52%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 53%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 54%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 55%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 56%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 57%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 58%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 59%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 60%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 61%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 62%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 63%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 64%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 65%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 66%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 67%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 68%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 69%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 70%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 71%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 72%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 73%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 74%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 75%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 76%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 77%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 78%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 79%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 80%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 81%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 82%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 83%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 84%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 85%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 86%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 87%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 88%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 89%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 90%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 91%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 92%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 93%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 94%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 95%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 96%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 97%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 98%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 99%
.../node_modules/@sentry/cli install: fetching sentry-cli-Linux-x86_64 100%
.../node_modules/vue-demi postinstall$ node ./scripts/postinstall.js
.../node_modules/@sentry/cli install: Done
.../node_modules/vue-demi postinstall: Done
.../node_modules/nuxt postinstall$ opencollective || exit 0
.../node_modules/nuxt postinstall:                                                              
.../node_modules/nuxt postinstall:                                      :-:                     
.../node_modules/nuxt postinstall:                                    .==-+:                    
.../node_modules/nuxt postinstall:                                   .==. :+- .-=-              
.../node_modules/nuxt postinstall:                                  .==.   :==++-+=.            
.../node_modules/nuxt postinstall:                                 :==.     -**: :+=.           
.../node_modules/nuxt postinstall:                                :+-      :*+++. .++.          
.../node_modules/nuxt postinstall:                               :+-      -*= .++: .=+.         
.../node_modules/nuxt postinstall:                              -+:      =*-   .+*: .=+:        
.../node_modules/nuxt postinstall:                             -+:     .=*-     .=*-  =+:       
.../node_modules/nuxt postinstall:                           .==:     .+*:        -*-  -+-      
.../node_modules/nuxt postinstall:                          .=+:.....:+*-.........:=*=..=*-     
.../node_modules/nuxt postinstall:                          .-=------=++============++====:     
.../node_modules/nuxt postinstall:                                          
.../node_modules/nuxt postinstall:                           Thanks for installing nuxtjs 
.../node_modules/nuxt postinstall:                  Please consider donating to our open collective
.../node_modules/nuxt postinstall:                         to help us maintain this package.
.../node_modules/nuxt postinstall:                                          
.../node_modules/nuxt postinstall:                             Number of contributors: 0
.../node_modules/nuxt postinstall:                               Number of backers: 474
.../node_modules/nuxt postinstall:                               Annual budget: $64,264
.../node_modules/nuxt postinstall:                              Current balance: $12,960
.../node_modules/nuxt postinstall:                                          
.../node_modules/nuxt postinstall:                  Donate: https://opencollective.com/nuxtjs/donate
.../node_modules/nuxt postinstall:                                          
.../node_modules/nuxt postinstall: Done

> openverse-frontend@2.2.1 prepare /usr/app
> husky install

fatal: not a git repository (or any of the parent directories): .git

dependencies:
+ @babel/eslint-parser 7.16.5
+ @nuxt/components 2.2.1
+ @nuxt/postcss8 1.1.3
+ @nuxtjs/composition-api 0.32.0
+ @nuxtjs/i18n 7.2.0
+ @nuxtjs/redirect-module 0.3.1
+ @nuxtjs/sentry 5.1.6
+ @nuxtjs/sitemap 2.4.0
+ @nuxtjs/svg 0.4.0
+ @pinia/nuxt 0.1.8
+ @popperjs/core 2.11.2
+ @tailwindcss/line-clamp 0.3.1
+ @tailwindcss/typography 0.5.2
+ @wordpress/is-shallow-equal 4.3.1
+ axios 0.26.1
+ axios-mock-adapter 1.20.0
+ babel-core 7.0.0-bridge.0
+ build-url 6.0.1 deprecated
+ case 1.6.3
+ clipboard 2.0.8
+ core-js 3.21.1
+ express-useragent 1.0.15
+ focus-trap 6.7.1
+ focus-trap-vue 1.1.1
+ focus-visible 5.2.0
+ glob 7.2.0
+ lodash.clonedeep 4.5.0
+ lodash.debounce 4.0.8
+ lodash.isempty 4.4.0
+ lodash.set 4.3.2
+ lodash.sortby 4.7.0
+ lodash.throttle 4.1.1
+ node-html-parser 5.3.3
+ nuxt 2.15.8
+ postcss-focus-visible 6.0.4
+ reakit-utils 0.15.2
+ seeded-rand 2.0.1
+ uuid 8.3.2
+ vue-i18n 8.26.7

devDependencies:
+ @babel/preset-typescript 7.16.7
+ @babel/runtime-corejs3 7.16.5
+ @intlify/eslint-plugin-vue-i18n 1.4.0
+ @nuxt/types 2.15.8
+ @nuxt/typescript-build 2.1.0
+ @nuxtjs/eslint-module 3.0.2
+ @nuxtjs/storybook 4.3.0
+ @nuxtjs/style-resources 1.2.1
+ @pinia/testing 0.0.11
+ @playwright/test 1.20.2
+ @testing-library/jest-dom 5.16.1
+ @testing-library/user-event 13.5.0
+ @testing-library/vue 5.8.2
+ @types/express-useragent 1.0.2
+ @types/jest 26.0.24
+ @types/module-alias 2.0.1
+ @types/uuid 8.3.4
+ @typescript-eslint/eslint-plugin 5.17.0
+ @typescript-eslint/parser 5.17.0
+ @vue/runtime-dom 3.2.31
+ @vue/test-utils 1.1.3
+ autoprefixer 10.4.0
+ babel-jest 26.6.3
+ eslint 8.12.0
+ eslint-config-prettier 8.5.0
+ eslint-import-resolver-custom-alias 1.3.0
+ eslint-plugin-eslint-comments 3.2.0
+ eslint-plugin-import 2.26.0
+ eslint-plugin-prettier 4.0.0
+ eslint-plugin-tsdoc 0.2.15
+ eslint-plugin-unicorn 42.0.0
+ eslint-plugin-vue 8.6.0
+ eslint-plugin-vuejs-accessibility 1.1.1
+ husky 7.0.4
+ jest 26.6.3
+ jest-transform-stub 2.0.0
+ lint-staged 12.3.7
+ module-alias 2.2.2
+ npm-run-all 4.1.5
+ pinia 2.0.13
+ postcss 8.4.12
+ prettier 2.6.0
+ rimraf 3.0.2
+ sass 1.49.9
+ sass-loader 10.2.1
+ tailwind-config-viewer 1.6.3
+ tailwindcss 3.0.23
+ tailwindcss-rtl 0.9.0
+ talkback 3.0.1
+ ts-node 10.7.0
+ typescript 4.6.2
+ vue-i18n-extract 2.0.4
+ vue-jest 3.0.7
+ vue-tsc 0.33.9

 ERR_PNPM_PEER_DEP_ISSUES  Unmet peer dependencies

.
├─┬ @babel/preset-typescript
│ ├── ✕ missing peer @babel/core@^7.0.0-0
│ └─┬ @babel/plugin-transform-typescript
│   ├── ✕ missing peer @babel/core@^7.0.0-0
│   ├─┬ @babel/helper-create-class-features-plugin
│   │ └── ✕ missing peer @babel/core@^7.0.0
│   └─┬ @babel/plugin-syntax-typescript
│     └── ✕ missing peer @babel/core@^7.0.0-0
├─┬ @nuxtjs/storybook
│ ├─┬ @storybook/addon-essentials
│ │ ├── ✕ missing peer @babel/core@^7.9.6
│ │ ├── ✕ missing peer webpack@"*"
│ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ ├── ✕ missing peer babel-loader@^8.0.0
│ │ ├─┬ @storybook/addon-docs
│ │ │ ├── ✕ missing peer webpack@"*"
│ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ ├── ✕ missing peer vue@"^2.6.10 || ^3.0.0"
│ │ │ ├─┬ @storybook/core
│ │ │ │ ├── ✕ missing peer webpack@"*"
│ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ ├─┬ @storybook/core-client
│ │ │ │ │ ├── ✕ missing peer webpack@"*"
│ │ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ └─┬ @storybook/core-server
│ │ │ │   ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │   ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │   ├─┬ @storybook/core-client
│ │ │ │   │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │   │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │   └─┬ @storybook/manager-webpack4
│ │ │ │     ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │     ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │     └─┬ @storybook/core-client
│ │ │ │       ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │       └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ ├─┬ @mdx-js/loader
│ │ │ │ └─┬ @mdx-js/react
│ │ │ │   └── ✕ missing peer react@"^16.13.1 || ^17.0.0"
│ │ │ ├─┬ @storybook/builder-webpack4
│ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ ├─┬ @storybook/client-api
│ │ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ ├─┬ @storybook/preview-web
│ │ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ ├─┬ @storybook/ui
│ │ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ │ ├─┬ downshift
│ │ │ │ │ │ └── ✕ missing peer react@>=16.12.0
│ │ │ │ │ ├─┬ react-draggable
│ │ │ │ │ │ ├── ✕ missing peer react@">= 16.3.0"
│ │ │ │ │ │ └── ✕ missing peer react-dom@">= 16.3.0"
│ │ │ │ │ └─┬ react-helmet-async
│ │ │ │ │   ├── ✕ missing peer react@"^16.6.0 || ^17.0.0"
│ │ │ │ │   └── ✕ missing peer react-dom@"^16.6.0 || ^17.0.0"
│ │ │ │ └─┬ terser-webpack-plugin
│ │ │ │   └─┬ terser
│ │ │ │     └── ✕ unmet peer acorn@^8.5.0: found 7.4.1
│ │ │ ├─┬ @storybook/source-loader
│ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ └─┬ react-element-to-jsx-string
│ │ │   ├── ✕ missing peer react@"^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1"
│ │ │   └── ✕ missing peer react-dom@"^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1"
│ │ ├─┬ @storybook/addon-controls
│ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ ├─┬ @storybook/core-common
│ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ └─┬ fork-ts-checker-webpack-plugin
│ │ │ │   └── ✕ missing peer vue-template-compiler@"*"
│ │ │ └─┬ @storybook/store
│ │ │   ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │   └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ ├─┬ @storybook/addon-actions
│ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ ├─┬ @storybook/addons
│ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ └─┬ @storybook/api
│ │ │ │   ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │   ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │   ├─┬ @storybook/router
│ │ │ │   │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │   │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │   │ ├─┬ react-router
│ │ │ │   │ │ └── ✕ missing peer react@>=16.8
│ │ │ │   │ └─┬ react-router-dom
│ │ │ │   │   ├── ✕ missing peer react@>=16.8
│ │ │ │   │   └── ✕ missing peer react-dom@>=16.8
│ │ │ │   └─┬ @storybook/theming
│ │ │ │     ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │     ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │     ├─┬ @emotion/core
│ │ │ │     │ └── ✕ missing peer react@>=16.3.0
│ │ │ │     ├─┬ @emotion/styled
│ │ │ │     │ ├── ✕ missing peer react@>=16.3.0
│ │ │ │     │ └─┬ @emotion/styled-base
│ │ │ │     │   └── ✕ missing peer react@>=16.3.0
│ │ │ │     └─┬ emotion-theming
│ │ │ │       └── ✕ missing peer react@>=16.3.0
│ │ │ ├─┬ @storybook/components
│ │ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │ ├── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ │ │ ├─┬ markdown-to-jsx
│ │ │ │ │ └── ✕ missing peer react@">= 0.14.0"
│ │ │ │ ├─┬ react-colorful
│ │ │ │ │ ├── ✕ missing peer react@>=16.8.0
│ │ │ │ │ └── ✕ missing peer react-dom@>=16.8.0
│ │ │ │ ├─┬ react-popper-tooltip
│ │ │ │ │ ├── ✕ missing peer react@"^16.6.0 || ^17.0.0"
│ │ │ │ │ ├── ✕ missing peer react-dom@"^16.6.0 || ^17.0.0"
│ │ │ │ │ └─┬ react-popper
│ │ │ │ │   └── ✕ missing peer react@"^16.8.0 || ^17"
│ │ │ │ ├─┬ react-syntax-highlighter
│ │ │ │ │ └── ✕ missing peer react@">= 0.14.0"
│ │ │ │ └─┬ react-textarea-autosize
│ │ │ │   ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │   ├─┬ use-composed-ref
│ │ │ │   │ └── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │   └─┬ use-latest
│ │ │ │     ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ │     └─┬ use-isomorphic-layout-effect
│ │ │ │       └── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ └─┬ react-inspector
│ │ │   └── ✕ missing peer react@"^16.8.4 || ^17.0.0"
│ │ ├─┬ @storybook/addon-backgrounds
│ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ ├─┬ @storybook/addon-measure
│ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ ├─┬ @storybook/addon-outline
│ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ ├─┬ @storybook/addon-toolbars
│ │ │ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │ │ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ │ └─┬ @storybook/addon-viewport
│ │   ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ │   └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
│ ├─┬ @storybook/vue
│ │ ├── ✕ missing peer @babel/core@"*"
│ │ ├── ✕ missing peer vue-template-compiler@^2.6.8
│ │ ├── ✕ missing peer vue@^2.6.8
│ │ ├── ✕ missing peer babel-loader@"^7.0.0 || ^8.0.0"
│ │ ├─┬ @storybook/core
│ │ │ └─┬ @storybook/core-server
│ │ │   └─┬ @storybook/builder-webpack4
│ │ │     └─┬ @storybook/core-common
│ │ │       └─┬ fork-ts-checker-webpack-plugin
│ │ │         └── ✕ missing peer vue-template-compiler@"*"
│ │ └─┬ vue-docgen-api
│ │   └─┬ vue-inbrowser-compiler-utils
│ │     └── ✕ missing peer vue@>=2
│ ├─┬ @nuxt/postcss8
│ │ ├─┬ css-loader
│ │ │ └── ✕ missing peer webpack@"^4.27.0 || ^5.0.0"
│ │ └─┬ postcss-loader
│ │   └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
│ ├─┬ @storybook/addon-postcss
│ │ ├─┬ css-loader
│ │ │ └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
│ │ ├─┬ postcss-loader
│ │ │ └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
│ │ └─┬ style-loader
│ │   └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
│ ├─┬ @storybook/react-docgen-typescript-plugin
│ │ └── ✕ missing peer webpack@">= 4"
│ └─┬ vue-loader
│   ├── ✕ missing peer webpack@"^3.0.0 || ^4.1.0 || ^5.0.0-0"
│   └── ✕ missing peer vue-template-compiler@"*"
├─┬ babel-jest
│ ├── ✕ missing peer @babel/core@^7.0.0
│ └─┬ babel-preset-jest
│   ├── ✕ missing peer @babel/core@^7.0.0
│   └─┬ babel-preset-current-node-syntax
│     ├── ✕ missing peer @babel/core@^7.0.0
│     ├─┬ @babel/plugin-syntax-async-generators
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-bigint
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-class-properties
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-import-meta
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-json-strings
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-logical-assignment-operators
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-nullish-coalescing-operator
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-numeric-separator
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-object-rest-spread
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-optional-catch-binding
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     ├─┬ @babel/plugin-syntax-optional-chaining
│     │ └── ✕ missing peer @babel/core@^7.0.0-0
│     └─┬ @babel/plugin-syntax-top-level-await
│       └── ✕ missing peer @babel/core@^7.0.0-0
├─┬ @babel/eslint-parser
│ └── ✕ missing peer @babel/core@>=7.11.0
├─┬ babel-core
│ └── ✕ missing peer @babel/core@^7.0.0-0
├─┬ @nuxt/types
│ └─┬ sass-loader
│   └── ✕ missing peer webpack@"^4.36.0 || ^5.0.0"
├─┬ @nuxt/typescript-build
│ ├─┬ fork-ts-checker-webpack-plugin
│ │ ├── ✕ missing peer webpack@">= 4"
│ │ └── ✕ missing peer vue-template-compiler@"*"
│ └─┬ ts-loader
│   └── ✕ missing peer webpack@"*"
├─┬ @nuxtjs/eslint-module
│ └─┬ eslint-webpack-plugin
│   └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
├─┬ sass-loader
│ └── ✕ missing peer webpack@"^4.36.0 || ^5.0.0"
├─┬ @nuxtjs/composition-api
│ ├── ✕ missing peer vue@^2
│ ├── ✕ missing peer @nuxt/vue-app@^2.15
│ ├─┬ unplugin-vue2-script-setup
│ │ └─┬ unplugin
│ │   └── ✕ missing peer webpack@"4 || 5"
│ └─┬ @vue/composition-api
│   └── ✕ missing peer vue@">= 2.5 < 3"
├─┬ @nuxtjs/svg
│ ├─┬ file-loader
│ │ └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
│ ├─┬ raw-loader
│ │ └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
│ ├─┬ url-loader
│ │ └── ✕ missing peer webpack@"^4.0.0 || ^5.0.0"
│ ├─┬ vue-svg-loader
│ │ ├── ✕ missing peer vue-template-compiler@^2.0.0
│ │ └─┬ svg-to-vue
│ │   └── ✕ missing peer vue-template-compiler@^2.0.0
│ └─┬ svg-sprite-loader
│   └─┬ svg-baker
│     └─┬ postcss-prefix-selector
│       └── ✕ unmet peer postcss@"7.x || 8.x": found 5.2.18 in svg-baker
├─┬ @testing-library/vue
│ ├── ✕ missing peer vue-template-compiler@^2.6.10
│ ├── ✕ missing peer vue@^2.6.10
│ └─┬ @vue/test-utils
│   ├── ✕ missing peer vue-template-compiler@^2.x
│   └── ✕ missing peer vue@2.x
├─┬ vue-jest
│ ├── ✕ missing peer vue-template-compiler@^2.x
│ └── ✕ missing peer vue@^2.x
├─┬ reakit-utils
│ ├── ✕ missing peer react@"^16.8.0 || ^17.0.0"
│ └── ✕ missing peer react-dom@"^16.8.0 || ^17.0.0"
├─┬ @pinia/testing
│ └─┬ vue-demi
│   └── ✕ missing peer vue@"^3.0.0-0 || ^2.6.0"
├─┬ pinia
│ └── ✕ missing peer vue@"^2.6.14 || ^3.2.0"
├─┬ focus-trap-vue
│ └── ✕ missing peer vue@^2.6.0
├─┬ @testing-library/user-event
│ └── ✕ missing peer @testing-library/dom@>=7.21.4
├─┬ ts-node
│ └── ✕ missing peer @types/node@"*"
└─┬ @nuxt/components
  └── ✕ missing peer consola@"*"
Peer dependencies that should be installed:
  @babel/core@">=7.11.0 <8.0.0"
  @nuxt/vue-app@^2.15
  @testing-library/dom@>=7.21.4
  @types/node@"*"
  babel-loader@">=8.0.0 <9.0.0"
  consola@"*"
  react-dom@">=16.8.0 <17.0.0 || >=17.0.1 <18.0.0"
  react@">=16.13.1 <17.0.0 || >=17.0.1 <18.0.0"
  vue-template-compiler@">=2.6.10 <3.0.0"
  vue@">=3.0.0-0 <3.0.0 || >=2.6.14 <3.0.0"
  webpack@">=4.36.0 <5.0.0 || >=5.0.0-0 <5.0.0 || >=5.0.0 <6.0.0"

The command '/bin/sh -c pnpm install --store=pnpm-store' returned a non-zero code: 1

This happens both when I run --target=app and --target=dev.

@sarayourfriend
Copy link
Contributor Author

Ah, that's the issue being fixed by #1385, this PR will need to be re-written once that merges anyway (it'll simplify this one a lot too).

I'll draft this PR until then!

@sarayourfriend sarayourfriend marked this pull request as draft May 4, 2022 21:36
@sarayourfriend sarayourfriend force-pushed the add/pm2-docker-target branch from 1c23a9c to 238e44c Compare May 9, 2022 14:11
@sarayourfriend sarayourfriend marked this pull request as ready for review May 9, 2022 14:12
@github-actions
Copy link

github-actions bot commented May 9, 2022

Storybook and Tailwind configuration previews: Ready

Storybook: https://wordpress.github.io/openverse-frontend/1331
Tailwind: https://wordpress.github.io/openverse-frontend/1331/tailwind

Please note that GitHub pages takes a little time to deploy newly pushed code, if the links above don't work or you see old versions, wait 5 minutes and try again.

You can check the GitHub pages deployment action list to see the current status of the deployments.

@sarayourfriend
Copy link
Contributor Author

This is ready for review now cc @AetherUnbound @dhruvkb and @obulat.

@github-actions
Copy link

github-actions bot commented May 9, 2022

Size Change: +5 B (0%)

Total Size: 1.4 MB

Filename Size Change
./.nuxt/dist/client/app.js 108 kB +2 B (0%)
./.nuxt/dist/client/app.modern.js 101 kB +3 B (0%)
ℹ️ View Unchanged
Filename Size
./.nuxt/dist/client/235.js 273 B
./.nuxt/dist/client/235.modern.js 278 B
./.nuxt/dist/client/236.js 1.85 kB
./.nuxt/dist/client/commons/app.js 82.1 kB
./.nuxt/dist/client/commons/app.modern.js 71.5 kB
./.nuxt/dist/client/components/extension-browsers.js 817 B
./.nuxt/dist/client/components/extension-browsers.modern.js 822 B
./.nuxt/dist/client/components/loading-icon.js 766 B
./.nuxt/dist/client/components/loading-icon.modern.js 773 B
./.nuxt/dist/client/components/table-sort-icon.js 515 B
./.nuxt/dist/client/components/table-sort-icon.modern.js 519 B
./.nuxt/dist/client/components/v-all-results-grid.js 4.02 kB
./.nuxt/dist/client/components/v-all-results-grid.modern.js 3.88 kB
./.nuxt/dist/client/components/v-audio-cell.js 340 B
./.nuxt/dist/client/components/v-audio-cell.modern.js 346 B
./.nuxt/dist/client/components/v-audio-details.js 1.55 kB
./.nuxt/dist/client/components/v-audio-details.modern.js 1.56 kB
./.nuxt/dist/client/components/v-audio-track-skeleton.js 1 kB
./.nuxt/dist/client/components/v-audio-track-skeleton.modern.js 1 kB
./.nuxt/dist/client/components/v-audio-track.js 4.37 kB
./.nuxt/dist/client/components/v-audio-track.modern.js 4.36 kB
./.nuxt/dist/client/components/v-back-to-search-results-link.js 575 B
./.nuxt/dist/client/components/v-back-to-search-results-link.modern.js 580 B
./.nuxt/dist/client/components/v-bone.js 682 B
./.nuxt/dist/client/components/v-bone.modern.js 687 B
./.nuxt/dist/client/components/v-box-layout.js 1.2 kB
./.nuxt/dist/client/components/v-box-layout.modern.js 1.2 kB
./.nuxt/dist/client/components/v-content-link.js 965 B
./.nuxt/dist/client/components/v-content-link.modern.js 946 B
./.nuxt/dist/client/components/v-content-page.js 461 B
./.nuxt/dist/client/components/v-content-page.modern.js 465 B
./.nuxt/dist/client/components/v-content-report-button.js 776 B
./.nuxt/dist/client/components/v-content-report-button.modern.js 777 B
./.nuxt/dist/client/components/v-content-report-form.js 3.77 kB
./.nuxt/dist/client/components/v-content-report-form.modern.js 3.58 kB
./.nuxt/dist/client/components/v-content-report-popover.js 4.43 kB
./.nuxt/dist/client/components/v-content-report-popover.modern.js 4.24 kB
./.nuxt/dist/client/components/v-copy-button.js 3.94 kB
./.nuxt/dist/client/components/v-copy-button.modern.js 3.95 kB
./.nuxt/dist/client/components/v-copy-license.js 4.9 kB
./.nuxt/dist/client/components/v-copy-license.modern.js 4.83 kB
./.nuxt/dist/client/components/v-dmca-notice.js 752 B
./.nuxt/dist/client/components/v-dmca-notice.modern.js 757 B
./.nuxt/dist/client/components/v-error-image.js 2.66 kB
./.nuxt/dist/client/components/v-error-image.modern.js 2.62 kB
./.nuxt/dist/client/components/v-error-section.js 387 B
./.nuxt/dist/client/components/v-error-section.modern.js 391 B
./.nuxt/dist/client/components/v-full-layout.js 1.52 kB
./.nuxt/dist/client/components/v-full-layout.modern.js 1.52 kB
./.nuxt/dist/client/components/v-grid-skeleton.js 1.64 kB
./.nuxt/dist/client/components/v-grid-skeleton.modern.js 1.64 kB
./.nuxt/dist/client/components/v-image-cell-square.js 1.01 kB
./.nuxt/dist/client/components/v-image-cell-square.modern.js 1.01 kB
./.nuxt/dist/client/components/v-image-cell.js 1.39 kB
./.nuxt/dist/client/components/v-image-cell.modern.js 1.38 kB
./.nuxt/dist/client/components/v-image-details.js 1.45 kB
./.nuxt/dist/client/components/v-image-details.modern.js 1.45 kB
./.nuxt/dist/client/components/v-image-grid.js 2.43 kB
./.nuxt/dist/client/components/v-image-grid.modern.js 2.32 kB
./.nuxt/dist/client/components/v-license-tab-panel.js 924 B
./.nuxt/dist/client/components/v-license-tab-panel.modern.js 918 B
./.nuxt/dist/client/components/v-load-more.js 769 B
./.nuxt/dist/client/components/v-load-more.modern.js 666 B
./.nuxt/dist/client/components/v-media-license.js 806 B
./.nuxt/dist/client/components/v-media-license.modern.js 817 B
./.nuxt/dist/client/components/v-media-reuse.js 1.04 kB
./.nuxt/dist/client/components/v-media-reuse.modern.js 1.05 kB
./.nuxt/dist/client/components/v-media-tag.js 422 B
./.nuxt/dist/client/components/v-media-tag.modern.js 425 B
./.nuxt/dist/client/components/v-meta-search-form.js 2.82 kB
./.nuxt/dist/client/components/v-meta-search-form.modern.js 2.79 kB
./.nuxt/dist/client/components/v-meta-source-list.js 2.3 kB
./.nuxt/dist/client/components/v-meta-source-list.modern.js 2.29 kB
./.nuxt/dist/client/components/v-modal.js 877 B
./.nuxt/dist/client/components/v-modal.modern.js 881 B
./.nuxt/dist/client/components/v-no-results.js 2.5 kB
./.nuxt/dist/client/components/v-no-results.modern.js 2.49 kB
./.nuxt/dist/client/components/v-notice-bar.js 344 B
./.nuxt/dist/client/components/v-notice-bar.modern.js 348 B
./.nuxt/dist/client/components/v-radio.js 1.52 kB
./.nuxt/dist/client/components/v-radio.modern.js 1.48 kB
./.nuxt/dist/client/components/v-related-audio.js 1.25 kB
./.nuxt/dist/client/components/v-related-audio.modern.js 1.25 kB
./.nuxt/dist/client/components/v-related-images.js 2.59 kB
./.nuxt/dist/client/components/v-related-images.modern.js 2.47 kB
./.nuxt/dist/client/components/v-report-desc-form.js 958 B
./.nuxt/dist/client/components/v-report-desc-form.modern.js 962 B
./.nuxt/dist/client/components/v-row-layout.js 1.8 kB
./.nuxt/dist/client/components/v-row-layout.modern.js 1.81 kB
./.nuxt/dist/client/components/v-scroll-button.js 778 B
./.nuxt/dist/client/components/v-scroll-button.modern.js 785 B
./.nuxt/dist/client/components/v-search-grid.js 6.05 kB
./.nuxt/dist/client/components/v-search-grid.modern.js 5.97 kB
./.nuxt/dist/client/components/v-search-results-title.js 662 B
./.nuxt/dist/client/components/v-search-results-title.modern.js 660 B
./.nuxt/dist/client/components/v-search-type-radio.js 829 B
./.nuxt/dist/client/components/v-search-type-radio.modern.js 822 B
./.nuxt/dist/client/components/v-server-timeout.js 314 B
./.nuxt/dist/client/components/v-server-timeout.modern.js 320 B
./.nuxt/dist/client/components/v-sketch-fab-viewer.js 996 B
./.nuxt/dist/client/components/v-sketch-fab-viewer.modern.js 895 B
./.nuxt/dist/client/components/v-skip-to-content-container.js 901 B
./.nuxt/dist/client/components/v-skip-to-content-container.modern.js 904 B
./.nuxt/dist/client/components/v-sources-table.js 14.3 kB
./.nuxt/dist/client/components/v-sources-table.modern.js 14.3 kB
./.nuxt/dist/client/components/v-tab-panel.js 690 B
./.nuxt/dist/client/components/v-tab-panel.modern.js 685 B
./.nuxt/dist/client/components/v-tab.js 2.6 kB
./.nuxt/dist/client/components/v-tab.modern.js 2.57 kB
./.nuxt/dist/client/components/v-tabs.js 754 B
./.nuxt/dist/client/components/v-tabs.modern.js 741 B
./.nuxt/dist/client/components/v-warning-suppressor.js 300 B
./.nuxt/dist/client/components/v-warning-suppressor.modern.js 305 B
./.nuxt/dist/client/lang-af.json.js 147 B
./.nuxt/dist/client/lang-af.json.modern.js 154 B
./.nuxt/dist/client/lang-am.json.js 147 B
./.nuxt/dist/client/lang-am.json.modern.js 154 B
./.nuxt/dist/client/lang-an.json.js 147 B
./.nuxt/dist/client/lang-an.json.modern.js 153 B
./.nuxt/dist/client/lang-ar.json.js 250 B
./.nuxt/dist/client/lang-ar.json.modern.js 255 B
./.nuxt/dist/client/lang-arq.json.js 148 B
./.nuxt/dist/client/lang-arq.json.modern.js 155 B
./.nuxt/dist/client/lang-ary.json.js 148 B
./.nuxt/dist/client/lang-ary.json.modern.js 155 B
./.nuxt/dist/client/lang-as.json.js 147 B
./.nuxt/dist/client/lang-as.json.modern.js 154 B
./.nuxt/dist/client/lang-az-tr.json.js 150 B
./.nuxt/dist/client/lang-az-tr.json.modern.js 157 B
./.nuxt/dist/client/lang-az.json.js 147 B
./.nuxt/dist/client/lang-az.json.modern.js 154 B
./.nuxt/dist/client/lang-azb.json.js 148 B
./.nuxt/dist/client/lang-azb.json.modern.js 155 B
./.nuxt/dist/client/lang-ba.json.js 147 B
./.nuxt/dist/client/lang-ba.json.modern.js 154 B
./.nuxt/dist/client/lang-bel.json.js 148 B
./.nuxt/dist/client/lang-bel.json.modern.js 155 B
./.nuxt/dist/client/lang-bg.json.js 147 B
./.nuxt/dist/client/lang-bg.json.modern.js 154 B
./.nuxt/dist/client/lang-bn-in.json.js 150 B
./.nuxt/dist/client/lang-bn-in.json.modern.js 156 B
./.nuxt/dist/client/lang-bn.json.js 147 B
./.nuxt/dist/client/lang-bn.json.modern.js 153 B
./.nuxt/dist/client/lang-bo.json.js 147 B
./.nuxt/dist/client/lang-bo.json.modern.js 154 B
./.nuxt/dist/client/lang-br.json.js 147 B
./.nuxt/dist/client/lang-br.json.modern.js 154 B
./.nuxt/dist/client/lang-bs.json.js 147 B
./.nuxt/dist/client/lang-bs.json.modern.js 154 B
./.nuxt/dist/client/lang-ca.json.js 9.3 kB
./.nuxt/dist/client/lang-ca.json.modern.js 9.3 kB
./.nuxt/dist/client/lang-ckb.json.js 148 B
./.nuxt/dist/client/lang-ckb.json.modern.js 155 B
./.nuxt/dist/client/lang-co.json.js 147 B
./.nuxt/dist/client/lang-co.json.modern.js 154 B
./.nuxt/dist/client/lang-cor.json.js 148 B
./.nuxt/dist/client/lang-cor.json.modern.js 155 B
./.nuxt/dist/client/lang-cs.json.js 9.71 kB
./.nuxt/dist/client/lang-cs.json.modern.js 9.72 kB
./.nuxt/dist/client/lang-cy.json.js 9.38 kB
./.nuxt/dist/client/lang-cy.json.modern.js 9.38 kB
./.nuxt/dist/client/lang-da.json.js 8.72 kB
./.nuxt/dist/client/lang-da.json.modern.js 8.72 kB
./.nuxt/dist/client/lang-de-at.json.js 150 B
./.nuxt/dist/client/lang-de-at.json.modern.js 157 B
./.nuxt/dist/client/lang-de-ch.json.js 150 B
./.nuxt/dist/client/lang-de-ch.json.modern.js 157 B
./.nuxt/dist/client/lang-de.json.js 9.97 kB
./.nuxt/dist/client/lang-de.json.modern.js 9.98 kB
./.nuxt/dist/client/lang-dv.json.js 147 B
./.nuxt/dist/client/lang-dv.json.modern.js 154 B
./.nuxt/dist/client/lang-dzo.json.js 148 B
./.nuxt/dist/client/lang-dzo.json.modern.js 155 B
./.nuxt/dist/client/lang-el.json.js 11.5 kB
./.nuxt/dist/client/lang-el.json.modern.js 11.5 kB
./.nuxt/dist/client/lang-en-au.json.js 809 B
./.nuxt/dist/client/lang-en-au.json.modern.js 813 B
./.nuxt/dist/client/lang-en-ca.json.js 7.91 kB
./.nuxt/dist/client/lang-en-ca.json.modern.js 7.91 kB
./.nuxt/dist/client/lang-en-gb.json.js 8.56 kB
./.nuxt/dist/client/lang-en-gb.json.modern.js 8.56 kB
./.nuxt/dist/client/lang-en-nz.json.js 150 B
./.nuxt/dist/client/lang-en-nz.json.modern.js 157 B
./.nuxt/dist/client/lang-en-za.json.js 5.22 kB
./.nuxt/dist/client/lang-en-za.json.modern.js 5.23 kB
./.nuxt/dist/client/lang-en.json.js 8.46 kB
./.nuxt/dist/client/lang-en.json.modern.js 8.46 kB
./.nuxt/dist/client/lang-eo.json.js 147 B
./.nuxt/dist/client/lang-eo.json.modern.js 154 B
./.nuxt/dist/client/lang-es-ar.json.js 8.9 kB
./.nuxt/dist/client/lang-es-ar.json.modern.js 8.9 kB
./.nuxt/dist/client/lang-es-cl.json.js 150 B
./.nuxt/dist/client/lang-es-cl.json.modern.js 157 B
./.nuxt/dist/client/lang-es-co.json.js 9.11 kB
./.nuxt/dist/client/lang-es-co.json.modern.js 9.12 kB
./.nuxt/dist/client/lang-es-cr.json.js 150 B
./.nuxt/dist/client/lang-es-cr.json.modern.js 157 B
./.nuxt/dist/client/lang-es-do.json.js 5.01 kB
./.nuxt/dist/client/lang-es-do.json.modern.js 5.02 kB
./.nuxt/dist/client/lang-es-ec.json.js 9.12 kB
./.nuxt/dist/client/lang-es-ec.json.modern.js 9.12 kB
./.nuxt/dist/client/lang-es-gt.json.js 151 B
./.nuxt/dist/client/lang-es-gt.json.modern.js 158 B
./.nuxt/dist/client/lang-es-hn.json.js 151 B
./.nuxt/dist/client/lang-es-hn.json.modern.js 157 B
./.nuxt/dist/client/lang-es-mx.json.js 9.32 kB
./.nuxt/dist/client/lang-es-mx.json.modern.js 9.32 kB
./.nuxt/dist/client/lang-es-pe.json.js 151 B
./.nuxt/dist/client/lang-es-pe.json.modern.js 158 B
./.nuxt/dist/client/lang-es-pr.json.js 151 B
./.nuxt/dist/client/lang-es-pr.json.modern.js 158 B
./.nuxt/dist/client/lang-es-uy.json.js 151 B
./.nuxt/dist/client/lang-es-uy.json.modern.js 158 B
./.nuxt/dist/client/lang-es-ve.json.js 9.12 kB
./.nuxt/dist/client/lang-es-ve.json.modern.js 9.12 kB
./.nuxt/dist/client/lang-es.json.js 9.31 kB
./.nuxt/dist/client/lang-es.json.modern.js 9.31 kB
./.nuxt/dist/client/lang-et.json.js 148 B
./.nuxt/dist/client/lang-et.json.modern.js 155 B
./.nuxt/dist/client/lang-eu.json.js 148 B
./.nuxt/dist/client/lang-eu.json.modern.js 155 B
./.nuxt/dist/client/lang-fa-af.json.js 151 B
./.nuxt/dist/client/lang-fa-af.json.modern.js 158 B
./.nuxt/dist/client/lang-fa.json.js 3.05 kB
./.nuxt/dist/client/lang-fa.json.modern.js 3.05 kB
./.nuxt/dist/client/lang-fi.json.js 148 B
./.nuxt/dist/client/lang-fi.json.modern.js 155 B
./.nuxt/dist/client/lang-fo.json.js 148 B
./.nuxt/dist/client/lang-fo.json.modern.js 155 B
./.nuxt/dist/client/lang-fr-be.json.js 151 B
./.nuxt/dist/client/lang-fr-be.json.modern.js 158 B
./.nuxt/dist/client/lang-fr-ca.json.js 151 B
./.nuxt/dist/client/lang-fr-ca.json.modern.js 158 B
./.nuxt/dist/client/lang-fr.json.js 7.1 kB
./.nuxt/dist/client/lang-fr.json.modern.js 7.1 kB
./.nuxt/dist/client/lang-fuc.json.js 149 B
./.nuxt/dist/client/lang-fuc.json.modern.js 156 B
./.nuxt/dist/client/lang-fy.json.js 148 B
./.nuxt/dist/client/lang-fy.json.modern.js 155 B
./.nuxt/dist/client/lang-ga.json.js 148 B
./.nuxt/dist/client/lang-ga.json.modern.js 155 B
./.nuxt/dist/client/lang-gd.json.js 148 B
./.nuxt/dist/client/lang-gd.json.modern.js 155 B
./.nuxt/dist/client/lang-gl.json.js 9.17 kB
./.nuxt/dist/client/lang-gl.json.modern.js 9.18 kB
./.nuxt/dist/client/lang-gu.json.js 148 B
./.nuxt/dist/client/lang-gu.json.modern.js 155 B
./.nuxt/dist/client/lang-hat.json.js 149 B
./.nuxt/dist/client/lang-hat.json.modern.js 156 B
./.nuxt/dist/client/lang-hau.json.js 149 B
./.nuxt/dist/client/lang-hau.json.modern.js 156 B
./.nuxt/dist/client/lang-he.json.js 148 B
./.nuxt/dist/client/lang-he.json.modern.js 155 B
./.nuxt/dist/client/lang-hi.json.js 203 B
./.nuxt/dist/client/lang-hi.json.modern.js 210 B
./.nuxt/dist/client/lang-hr.json.js 148 B
./.nuxt/dist/client/lang-hr.json.modern.js 155 B
./.nuxt/dist/client/lang-hu.json.js 148 B
./.nuxt/dist/client/lang-hu.json.modern.js 155 B
./.nuxt/dist/client/lang-hy.json.js 148 B
./.nuxt/dist/client/lang-hy.json.modern.js 155 B
./.nuxt/dist/client/lang-ibo.json.js 149 B
./.nuxt/dist/client/lang-ibo.json.modern.js 156 B
./.nuxt/dist/client/lang-id.json.js 8.45 kB
./.nuxt/dist/client/lang-id.json.modern.js 8.46 kB
./.nuxt/dist/client/lang-ido.json.js 149 B
./.nuxt/dist/client/lang-ido.json.modern.js 156 B
./.nuxt/dist/client/lang-is.json.js 148 B
./.nuxt/dist/client/lang-is.json.modern.js 155 B
./.nuxt/dist/client/lang-it.json.js 9.13 kB
./.nuxt/dist/client/lang-it.json.modern.js 9.13 kB
./.nuxt/dist/client/lang-ja.json.js 4.72 kB
./.nuxt/dist/client/lang-ja.json.modern.js 4.73 kB
./.nuxt/dist/client/lang-jv.json.js 148 B
./.nuxt/dist/client/lang-jv.json.modern.js 155 B
./.nuxt/dist/client/lang-ka.json.js 148 B
./.nuxt/dist/client/lang-ka.json.modern.js 155 B
./.nuxt/dist/client/lang-kal.json.js 149 B
./.nuxt/dist/client/lang-kal.json.modern.js 156 B
./.nuxt/dist/client/lang-kin.json.js 149 B
./.nuxt/dist/client/lang-kin.json.modern.js 155 B
./.nuxt/dist/client/lang-kir.json.js 907 B
./.nuxt/dist/client/lang-kir.json.modern.js 912 B
./.nuxt/dist/client/lang-kk.json.js 148 B
./.nuxt/dist/client/lang-kk.json.modern.js 155 B
./.nuxt/dist/client/lang-km.json.js 148 B
./.nuxt/dist/client/lang-km.json.modern.js 155 B
./.nuxt/dist/client/lang-kmr.json.js 149 B
./.nuxt/dist/client/lang-kmr.json.modern.js 156 B
./.nuxt/dist/client/lang-kn.json.js 3.27 kB
./.nuxt/dist/client/lang-kn.json.modern.js 3.28 kB
./.nuxt/dist/client/lang-ko.json.js 148 B
./.nuxt/dist/client/lang-ko.json.modern.js 155 B
./.nuxt/dist/client/lang-lb.json.js 148 B
./.nuxt/dist/client/lang-lb.json.modern.js 155 B
./.nuxt/dist/client/lang-li.json.js 148 B
./.nuxt/dist/client/lang-li.json.modern.js 155 B
./.nuxt/dist/client/lang-lin.json.js 149 B
./.nuxt/dist/client/lang-lin.json.modern.js 155 B
./.nuxt/dist/client/lang-lo.json.js 148 B
./.nuxt/dist/client/lang-lo.json.modern.js 155 B
./.nuxt/dist/client/lang-lt.json.js 148 B
./.nuxt/dist/client/lang-lt.json.modern.js 155 B
./.nuxt/dist/client/lang-lug.json.js 149 B
./.nuxt/dist/client/lang-lug.json.modern.js 156 B
./.nuxt/dist/client/lang-lv.json.js 6.73 kB
./.nuxt/dist/client/lang-lv.json.modern.js 6.73 kB
./.nuxt/dist/client/lang-mg.json.js 148 B
./.nuxt/dist/client/lang-mg.json.modern.js 155 B
./.nuxt/dist/client/lang-mk.json.js 148 B
./.nuxt/dist/client/lang-mk.json.modern.js 155 B
./.nuxt/dist/client/lang-ml.json.js 148 B
./.nuxt/dist/client/lang-ml.json.modern.js 155 B
./.nuxt/dist/client/lang-mn.json.js 148 B
./.nuxt/dist/client/lang-mn.json.modern.js 154 B
./.nuxt/dist/client/lang-mr.json.js 148 B
./.nuxt/dist/client/lang-mr.json.modern.js 155 B
./.nuxt/dist/client/lang-mri.json.js 149 B
./.nuxt/dist/client/lang-mri.json.modern.js 156 B
./.nuxt/dist/client/lang-ms.json.js 148 B
./.nuxt/dist/client/lang-ms.json.modern.js 155 B
./.nuxt/dist/client/lang-mya.json.js 149 B
./.nuxt/dist/client/lang-mya.json.modern.js 156 B
./.nuxt/dist/client/lang-nb.json.js 3.37 kB
./.nuxt/dist/client/lang-nb.json.modern.js 3.37 kB
./.nuxt/dist/client/lang-ne.json.js 331 B
./.nuxt/dist/client/lang-ne.json.modern.js 335 B
./.nuxt/dist/client/lang-nl-be.json.js 9.4 kB
./.nuxt/dist/client/lang-nl-be.json.modern.js 9.4 kB
./.nuxt/dist/client/lang-nl.json.js 6.47 kB
./.nuxt/dist/client/lang-nl.json.modern.js 6.47 kB
./.nuxt/dist/client/lang-nn.json.js 148 B
./.nuxt/dist/client/lang-nn.json.modern.js 154 B
./.nuxt/dist/client/lang-oci.json.js 149 B
./.nuxt/dist/client/lang-oci.json.modern.js 156 B
./.nuxt/dist/client/lang-ory.json.js 149 B
./.nuxt/dist/client/lang-ory.json.modern.js 156 B
./.nuxt/dist/client/lang-os.json.js 148 B
./.nuxt/dist/client/lang-os.json.modern.js 155 B
./.nuxt/dist/client/lang-pl.json.js 148 B
./.nuxt/dist/client/lang-pl.json.modern.js 155 B
./.nuxt/dist/client/lang-ps.json.js 148 B
./.nuxt/dist/client/lang-ps.json.modern.js 155 B
./.nuxt/dist/client/lang-pt-ao.json.js 151 B
./.nuxt/dist/client/lang-pt-ao.json.modern.js 158 B
./.nuxt/dist/client/lang-pt-br.json.js 5.59 kB
./.nuxt/dist/client/lang-pt-br.json.modern.js 5.59 kB
./.nuxt/dist/client/lang-pt.json.js 434 B
./.nuxt/dist/client/lang-pt.json.modern.js 437 B
./.nuxt/dist/client/lang-ro.json.js 9.52 kB
./.nuxt/dist/client/lang-ro.json.modern.js 9.53 kB
./.nuxt/dist/client/lang-roh.json.js 149 B
./.nuxt/dist/client/lang-roh.json.modern.js 156 B
./.nuxt/dist/client/lang-ru.json.js 3.66 kB
./.nuxt/dist/client/lang-ru.json.modern.js 3.66 kB
./.nuxt/dist/client/lang-sa-in.json.js 151 B
./.nuxt/dist/client/lang-sa-in.json.modern.js 157 B
./.nuxt/dist/client/lang-si.json.js 148 B
./.nuxt/dist/client/lang-si.json.modern.js 155 B
./.nuxt/dist/client/lang-sk.json.js 267 B
./.nuxt/dist/client/lang-sk.json.modern.js 271 B
./.nuxt/dist/client/lang-sl.json.js 148 B
./.nuxt/dist/client/lang-sl.json.modern.js 155 B
./.nuxt/dist/client/lang-sna.json.js 149 B
./.nuxt/dist/client/lang-sna.json.modern.js 156 B
./.nuxt/dist/client/lang-snd.json.js 149 B
./.nuxt/dist/client/lang-snd.json.modern.js 156 B
./.nuxt/dist/client/lang-so.json.js 148 B
./.nuxt/dist/client/lang-so.json.modern.js 155 B
./.nuxt/dist/client/lang-sq-xk.json.js 151 B
./.nuxt/dist/client/lang-sq-xk.json.modern.js 158 B
./.nuxt/dist/client/lang-sq.json.js 9.77 kB
./.nuxt/dist/client/lang-sq.json.modern.js 9.78 kB
./.nuxt/dist/client/lang-sr.json.js 148 B
./.nuxt/dist/client/lang-sr.json.modern.js 155 B
./.nuxt/dist/client/lang-srd.json.js 149 B
./.nuxt/dist/client/lang-srd.json.modern.js 156 B
./.nuxt/dist/client/lang-ssw.json.js 149 B
./.nuxt/dist/client/lang-ssw.json.modern.js 156 B
./.nuxt/dist/client/lang-su.json.js 148 B
./.nuxt/dist/client/lang-su.json.modern.js 155 B
./.nuxt/dist/client/lang-sv.json.js 4.92 kB
./.nuxt/dist/client/lang-sv.json.modern.js 4.92 kB
./.nuxt/dist/client/lang-sw.json.js 148 B
./.nuxt/dist/client/lang-sw.json.modern.js 155 B
./.nuxt/dist/client/lang-ta-lk.json.js 151 B
./.nuxt/dist/client/lang-ta-lk.json.modern.js 158 B
./.nuxt/dist/client/lang-ta.json.js 148 B
./.nuxt/dist/client/lang-ta.json.modern.js 155 B
./.nuxt/dist/client/lang-tah.json.js 149 B
./.nuxt/dist/client/lang-tah.json.modern.js 156 B
./.nuxt/dist/client/lang-te.json.js 3.52 kB
./.nuxt/dist/client/lang-te.json.modern.js 3.53 kB
./.nuxt/dist/client/lang-tg.json.js 148 B
./.nuxt/dist/client/lang-tg.json.modern.js 155 B
./.nuxt/dist/client/lang-th.json.js 148 B
./.nuxt/dist/client/lang-th.json.modern.js 155 B
./.nuxt/dist/client/lang-tir.json.js 149 B
./.nuxt/dist/client/lang-tir.json.modern.js 156 B
./.nuxt/dist/client/lang-tl.json.js 148 B
./.nuxt/dist/client/lang-tl.json.modern.js 155 B
./.nuxt/dist/client/lang-tr.json.js 1.38 kB
./.nuxt/dist/client/lang-tr.json.modern.js 1.39 kB
./.nuxt/dist/client/lang-tt.json.js 148 B
./.nuxt/dist/client/lang-tt.json.modern.js 155 B
./.nuxt/dist/client/lang-tuk.json.js 149 B
./.nuxt/dist/client/lang-tuk.json.modern.js 156 B
./.nuxt/dist/client/lang-ug.json.js 148 B
./.nuxt/dist/client/lang-ug.json.modern.js 155 B
./.nuxt/dist/client/lang-uk.json.js 148 B
./.nuxt/dist/client/lang-uk.json.modern.js 155 B
./.nuxt/dist/client/lang-ur.json.js 148 B
./.nuxt/dist/client/lang-ur.json.modern.js 155 B
./.nuxt/dist/client/lang-uz.json.js 148 B
./.nuxt/dist/client/lang-uz.json.modern.js 155 B
./.nuxt/dist/client/lang-vi.json.js 148 B
./.nuxt/dist/client/lang-vi.json.modern.js 155 B
./.nuxt/dist/client/lang-wol.json.js 149 B
./.nuxt/dist/client/lang-wol.json.modern.js 156 B
./.nuxt/dist/client/lang-xho.json.js 149 B
./.nuxt/dist/client/lang-xho.json.modern.js 156 B
./.nuxt/dist/client/lang-yor.json.js 149 B
./.nuxt/dist/client/lang-yor.json.modern.js 156 B
./.nuxt/dist/client/lang-zh-cn.json.js 5.05 kB
./.nuxt/dist/client/lang-zh-cn.json.modern.js 5.05 kB
./.nuxt/dist/client/lang-zh-hk.json.js 151 B
./.nuxt/dist/client/lang-zh-hk.json.modern.js 158 B
./.nuxt/dist/client/lang-zh-sg.json.js 151 B
./.nuxt/dist/client/lang-zh-sg.json.modern.js 158 B
./.nuxt/dist/client/lang-zh-tw.json.js 4.1 kB
./.nuxt/dist/client/lang-zh-tw.json.modern.js 4.1 kB
./.nuxt/dist/client/lang-zul.json.js 149 B
./.nuxt/dist/client/lang-zul.json.modern.js 156 B
./.nuxt/dist/client/pages/about.js 1.05 kB
./.nuxt/dist/client/pages/about.modern.js 1.05 kB
./.nuxt/dist/client/pages/audio/_id.js 4.06 kB
./.nuxt/dist/client/pages/audio/_id.modern.js 3.93 kB
./.nuxt/dist/client/pages/extension.js 2.19 kB
./.nuxt/dist/client/pages/extension.modern.js 2.2 kB
./.nuxt/dist/client/pages/feedback.js 4.07 kB
./.nuxt/dist/client/pages/feedback.modern.js 4.02 kB
./.nuxt/dist/client/pages/image/_id.js 6.32 kB
./.nuxt/dist/client/pages/image/_id.modern.js 6.1 kB
./.nuxt/dist/client/pages/index.js 5.08 kB
./.nuxt/dist/client/pages/index.modern.js 4.96 kB
./.nuxt/dist/client/pages/meta-search.js 1.67 kB
./.nuxt/dist/client/pages/meta-search.modern.js 1.68 kB
./.nuxt/dist/client/pages/preferences.js 1.24 kB
./.nuxt/dist/client/pages/preferences.modern.js 1.24 kB
./.nuxt/dist/client/pages/search-help.js 1.53 kB
./.nuxt/dist/client/pages/search-help.modern.js 1.53 kB
./.nuxt/dist/client/pages/search.js 2.46 kB
./.nuxt/dist/client/pages/search.modern.js 2.33 kB
./.nuxt/dist/client/pages/search/audio.js 2.77 kB
./.nuxt/dist/client/pages/search/audio.modern.js 2.65 kB
./.nuxt/dist/client/pages/search/image.js 2.78 kB
./.nuxt/dist/client/pages/search/image.modern.js 2.66 kB
./.nuxt/dist/client/pages/search/index.js 808 B
./.nuxt/dist/client/pages/search/index.modern.js 719 B
./.nuxt/dist/client/pages/search/search-page.types.js 266 B
./.nuxt/dist/client/pages/search/search-page.types.modern.js 271 B
./.nuxt/dist/client/pages/search/video.js 257 B
./.nuxt/dist/client/pages/search/video.modern.js 261 B
./.nuxt/dist/client/pages/sources.js 1.43 kB
./.nuxt/dist/client/pages/sources.modern.js 1.43 kB
./.nuxt/dist/client/runtime.js 2.7 kB
./.nuxt/dist/client/runtime.modern.js 2.7 kB
./.nuxt/dist/client/vendors/app.js 49 kB
./.nuxt/dist/client/vendors/app.modern.js 48.5 kB
./.nuxt/dist/client/vendors/sentry.js 41.5 kB
./.nuxt/dist/client/vendors/sentry.modern.js 41.5 kB

compressed-size-action

@krysal
Copy link
Member

krysal commented May 9, 2022

What is pm2 needed for?

@sarayourfriend
Copy link
Contributor Author

To get the benefits from cluster mode, described here: https://pm2.keymetrics.io/docs/usage/cluster-mode/

We already run it with pm2 in production, so this is just making the docker image inline with the production ec2 deployment.

@zackkrida
Copy link
Member

@krysal PM2 also handles simpler things like automatically restarting the node process in the event of a critical error, but could also do other nice things for us in the future. Here's some other 'restart strategies' they list1:

  • Restart app at a specified CRON time
  • Restart app when files have changed
  • Restart when app reach a memory threshold
  • Delay a start and automatic restart
  • Disable auto restart (app are always restarted with PM2) when crashing or exiting by default)
  • Restart application automatically at a specific exponential increasing time

A similar, unsupported library is forever. I don't know how common it is to use libraries like this anymore, to be honest, but it seems good for us to be consistent with prod for now and we can figure out deprecating pm2 later if beneficial.

Footnotes

  1. https://pm2.keymetrics.io/docs/usage/restart-strategies/

Copy link
Member

@zackkrida zackkrida left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Working well locally! Nice.

@sarayourfriend
Copy link
Contributor Author

All of those things you mentioned, Zack, are also features of Kubernetes, ECS, etc.

I agree it's good to just align with the existing deployment and then re-evaluate. One thing I'm not sure of is whether FARGATE even has more than one CPU core in the configuration we'd use to run the cluster mode on.

Copy link
Member

@krysal krysal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the explanations, @sarayourfriend @zackkrida. Feels better knowing the context 😄 The image continues to run on macOS 👍

@AetherUnbound
Copy link
Contributor

Hmm, I still can't seem to get this to build locally 😞 Be that as it may, if this works for the frontend devs then feel free to merge now 🙂

Docker build error
docker build . --no-cache --build-arg PNPM_VERSION=$(cat .pnpm-version) -t openverse-frontend:latest
Sending build context to Docker daemon  86.61MB
Step 1/19 : FROM node:16-alpine
 ---> e5065cc78074
Step 2/19 : ARG PNPM_VERSION
 ---> Running in acf2ab2c4352
Removing intermediate container acf2ab2c4352
 ---> 472446b59663
Step 3/19 : RUN npm install -g pnpm@${PNPM_VERSION} pm2@5.2.0
 ---> Running in 9d7e9a3556ec
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.

added 183 packages, and audited 184 packages in 5s

13 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice 
npm notice New minor version of npm available! 8.5.5 -> 8.9.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v8.9.0>
npm notice Run `npm install -g npm@8.9.0` to update!
npm notice 
Removing intermediate container 9d7e9a3556ec
 ---> 20a3714c1476
Step 4/19 : USER node
 ---> Running in abd0286a732e
Removing intermediate container abd0286a732e
 ---> f4a4fda8021b
Step 5/19 : WORKDIR /home/node/app
 ---> Running in 3f82326b9657
Removing intermediate container 3f82326b9657
 ---> 427494449404
Step 6/19 : COPY pnpm-lock.yaml .
 ---> e27bec88437b
Step 7/19 : RUN pnpm fetch
 ---> Running in 24caf7433e5f
 EACCES  EACCES: permission denied, open '/home/node/app/_tmp_1_cbc8a505f5c86e268d2f7942784c5527'



node:internal/fs/utils:345
    throw err;
    ^

Error: EACCES: permission denied, open '.pnpm-debug.log'
    at Object.openSync (node:fs:585:3)
    at Object.writeFileSync (node:fs:2170:35)
    at process.<anonymous> (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:182261:31)
    at process.emit (node:events:527:28)
    at processEmit2 [as emit] (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:12615:41)
    at process.exit (node:internal/process/per_thread:189:15)
    at Timeout._onTimeout (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:12458:32)
    at listOnTimeout (node:internal/timers:559:17)
    at processTimers (node:internal/timers:502:7) {
  errno: -13,
  syscall: 'open',
  code: 'EACCES',
  path: '.pnpm-debug.log'
}
The command '/bin/sh -c pnpm fetch' returned a non-zero code: 1

@sarayourfriend
Copy link
Contributor Author

sarayourfriend commented May 9, 2022

@AetherUnbound Are you using BuildKit? I think it might only work under BuildKit currently. @krysal had some ideas of how to make it work more generally though. We skipped fixing that for now because it's just meant to be built in CI 99% of the time anyway.

@AetherUnbound
Copy link
Contributor

@AetherUnbound Are you using BuildKit?

I was not! I tried with DOCKER_BUILDKIT=1 and it got further, but now I'm back at the Unmet peer dependencies issue 😕

@sarayourfriend
Copy link
Contributor Author

Are you running the build with the --build-args argument in the PR description, pulling PNPM_VERSION from the local file? That error only happens if the pnpm version is unpinned.

If so, can you make sure you're also pulled down on the latest version of the branch? The build runs successfully in CI, FWIW.

Copy link
Contributor

@obulat obulat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can confirm that Mac cannot build this image, but can run the gchr container.
Is this supposed to run in a cluster of 4 (what?). I get the log saying that it's running in a cluster mode, and there are 4 repeated messages saying that Nuxt app is running and listening (on the same port).

@sarayourfriend
Copy link
Contributor Author

@obulat by default pm2 in cluster mode runs one instance per available CPU core I think. The configuration is copied from the production EC2 configuration.

@sarayourfriend sarayourfriend merged commit d915743 into main May 10, 2022
@sarayourfriend sarayourfriend deleted the add/pm2-docker-target branch May 10, 2022 09:32
@AetherUnbound
Copy link
Contributor

Are you running the build with the --build-args argument in the PR description, pulling PNPM_VERSION from the local file? That error only happens if the pnpm version is unpinned.

If so, can you make sure you're also pulled down on the latest version of the branch? The build runs successfully in CI, FWIW.

Okay, I'm not sure what the issue was but I tried it again on a different computer off of main now and it built just fine 🙂

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

💻 aspect: code Concerns the software code in the repository 🧰 goal: internal improvement Improvement that benefits maintainers, not users 🟩 priority: low Low priority and doesn't need to be rushed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants