feat: add Docker build (#41187)
* feat(docker): build and use client and api images * feat: always use .env dotenv fails without throwing if the .env file is missing and never overwrites variables if they already exist. As such, we can use it in build pipelines. * fix: remove quotes from env vars dotenv normalises quoted and unquoted strings (X=x, X='x' and X="x") all become the same .env object {X: 'x'}. However, Docker's env_file does not (the three cases are distinct). As a result, we should use unquoted strings for consistency. * fix: provide custom warning when .env is missing * feat(docker): include client-config * fix(docker): remove build packages from api image * fix(docker): run script from correct dir * fix(docker): correct permissions and dests * fix(docker): consolidate run steps This is standard practice, but did not have a noticable affect on the image size * fix(docker): clean the npm cache Prior to this step the image was 1.11GB uncompressed and we got a modest saving, 1.09GB after. * refactor(docker): regexless COPY directives * feat(docker): use alpine This shrinks the image down to 259MB * fix(docker): update build scripts * fix: correct the server Dockerfile RUNs * DEBUG: expose mysql port for seeding * chore: update client Dockerfile's node versions * fix: remove executable permissions from index.js It's not a cli, so I don't think it needs to be executable. * chore: update node and remove stale comments * feat: use ENTRYPOINT + CMD to allow runtime config * fix: add CURRICULUM_LOCALE arg * feat: allow client port configuration * feat: allow api port to be configured * refactor: use unique variable names for ports * fix: add default CLIENT_PORT * refactor: clean up
This commit is contained in:
committed by
GitHub
parent
0858f078e2
commit
5d46e2830a
@@ -1,13 +1,15 @@
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
// PIPELINE_ENV is 'true' in the build pipeline
|
||||
if (process.env.PIPELINE_ENV !== 'true') {
|
||||
const envPath = path.resolve(__dirname, '../.env');
|
||||
if (!fs.existsSync(envPath)) {
|
||||
throw Error('.env not found, please copy sample.env to .env.');
|
||||
const envPath = path.resolve(__dirname, '../.env');
|
||||
const { error } = require('dotenv').config({ path: envPath });
|
||||
|
||||
if (error) {
|
||||
if (process.env.FREECODECAMP_NODE_ENV === 'development') {
|
||||
console.warn('.env not found, please copy sample.env to .env');
|
||||
} else {
|
||||
console.warn(`.env not found. If env vars are not being set another way,
|
||||
this could be a problem.`);
|
||||
}
|
||||
require('dotenv').config({ path: envPath });
|
||||
}
|
||||
|
||||
const {
|
||||
|
Reference in New Issue
Block a user