Mám zapísaní v docker kurz inštruktora poskytla starter projekt u niektorých skôr staré reagovať kód.
Som dockerized v reagovať projektu, tu je jednoduchý Dockerfile:
FROM node
WORKDIR /app
COPY package.json .
RUN npm i
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Potom som sa postavil na obrázku:
docker build -t goals-react .
A bežal kontajner v pripojenom režime:
docker run --name goals-app --rm -p 3000:3000 goals-react
Toto je výstupný som dostal:
> [email protected] start
> react-scripts start
ℹ 「wds」: Project is running at http://172.17.0.4/
ℹ 「wds」: webpack output is served from
ℹ 「wds」: Content not from webpack is served from /app/public
ℹ 「wds」: 404s will fallback to /
Starting the development server...
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:130:10)
at module.exports (/app/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/app/node_modules/webpack/lib/NormalModule.js:417:16)
at handleParseError (/app/node_modules/webpack/lib/NormalModule.js:471:10)
at /app/node_modules/webpack/lib/NormalModule.js:503:5
at /app/node_modules/webpack/lib/NormalModule.js:358:12
at /app/node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (/app/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at iterateNormalLoaders (/app/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
/app/node_modules/react-scripts/scripts/start.js:19
throw err;
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:130:10)
at module.exports (/app/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/app/node_modules/webpack/lib/NormalModule.js:417:16)
at /app/node_modules/webpack/lib/NormalModule.js:452:10
at /app/node_modules/webpack/lib/NormalModule.js:323:13
at /app/node_modules/loader-runner/lib/LoaderRunner.js:367:11
at /app/node_modules/loader-runner/lib/LoaderRunner.js:233:18
at context.callback (/app/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
at /app/node_modules/babel-loader/lib/index.js:59:103 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v17.1.0
Predpokladal som, že to bolo preto, lebo reagovať projekt bol pomocou starú verziu reagovať, tak som upgradovali balíka.json súbor s nasledujúcimi príkazmi:
npx npm-check-updates -u
npm install
Potom som odstrániť a znovu vytvoriť obrázok, a potom bežal nový kontajner:
docker rmi goals-react
docker build -t goals-react .
docker run --name goals-app --rm -p 3000:3000 goals-react
Ale na moje prekvapenie som dostal rovnakú chybu. Tak som googled digital envelope routines::unsupported
a ja som našiel ešte iný stackoverflow diskusiu.
Som vykonal nasledovný príkaz:
export NODE_OPTIONS=--openssl-legacy-provider
Potom som prestavaný obrazu a znovu kontajner, ale bezvýsledne. Ja som sa rozhodol, prečítajte si chybové hlásenie dôkladnejšie a zdá sa, že webpack chyba. Išiel som do webpack github stránky a uvedomil som si, že niekto mal ten istý problém tuvšak problém je zatvorené. Taktiež sa odporúča vyššie uvedený príkaz, ale to zrejme nie je práca pre mňa.
Vopred ďakujeme za akúkoľvek spätnú väzbu a pomoc.
Úprava:
Ako to požaduje @MikiBelavista, tu je balíka.json súbor:
{
"name": "frontend",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.15.1",
"@testing-library/react": "^12.1.2",
"@testing-library/user-event": "^13.5.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}