diff --git a/build-local-docker-image.sh b/build-local-docker-image.sh index a4ccab4a89..3869d86a82 100755 --- a/build-local-docker-image.sh +++ b/build-local-docker-image.sh @@ -8,35 +8,70 @@ # 3. build nocodb SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +LOG_FILE=${SCRIPT_DIR}/build-local-docker-image.log +ERROR="" -#build nocodb-sdk -echo "Building nocodb-sdk" -cd ${SCRIPT_DIR}/packages/nocodb-sdk -npm ci -npm run build - -# build nc-gui -echo "Building nc-gui" -export NODE_OPTIONS="--max_old_space_size=16384" -# generate static build of nc-gui -cd ${SCRIPT_DIR}/packages/nc-gui -npm ci -npm run generate - -# copy nc-gui build to nocodb dir -rsync -rvzh --delete ./dist/ ${SCRIPT_DIR}/packages/nocodb/docker/nc-gui/ - -#build nocodb -# build nocodb ( pack nocodb-sdk and nc-gui ) -cd ${SCRIPT_DIR}/packages/nocodb -npm install -EE=true ./node_modules/.bin/webpack --config webpack.local.config.js -# remove nocodb-sdk since it's packed with the build -npm uninstall --save nocodb-sdk - -# build docker -docker build . -f Dockerfile.local -t nocodb-local - -echo 'docker image with tag "nocodb-local" built sussessfully. Use below sample command to run the container' -echo 'docker run -d -p 3333:8080 --name nocodb-local nocodb-local ' +function build_sdk(){ + #build nocodb-sdk + cd ${SCRIPT_DIR}/packages/nocodb-sdk + npm ci || ERROR="sdk build failed" + npm run build || ERROR="sdk build failed" +} +function build_gui(){ + # build nc-gui + export NODE_OPTIONS="--max_old_space_size=16384" + # generate static build of nc-gui + cd ${SCRIPT_DIR}/packages/nc-gui + npm ci || ERROR="gui build failed" + npm run generate || ERROR="gui build failed" +} + +function copy_gui_artifacts(){ + # copy nc-gui build to nocodb dir + rsync -rvzh --delete ./dist/ ${SCRIPT_DIR}/packages/nocodb/docker/nc-gui/ || ERROR="copy_gui_artifacts failed" +} + +function package_nocodb(){ + #build nocodb + # build nocodb ( pack nocodb-sdk and nc-gui ) + cd ${SCRIPT_DIR}/packages/nocodb + npm install || ERROR="package_nocodb failed" + EE=true ./node_modules/.bin/webpack --config webpack.local.config.js || ERROR="package_nocodb failed" +} + +function build_image(){ + # build docker + docker build . -f Dockerfile.local -t nocodb-local || ERROR="build_image failed" +} + +function log_message(){ + if [[ ${ERROR} != "" ]]; + then + >&2 echo "build failed, Please check build-local-docker-image.log for more details" + >&2 echo "ERROR: ${ERROR}" + exit 1 + else + echo 'docker image with tag "nocodb-local" built sussessfully. Use below sample command to run the container' + echo 'docker run -d -p 3333:8080 --name nocodb-local nocodb-local ' + fi +} + +echo "Info: Building nocodb-sdk" | tee ${LOG_FILE} +build_sdk 1>> ${LOG_FILE} 2>> ${LOG_FILE} + +echo "Info: Building nc-gui" | tee -a ${LOG_FILE} +build_gui 1>> ${LOG_FILE} 2>> ${LOG_FILE} + +echo "Info: copy nc-gui build to nocodb dir" | tee -a ${LOG_FILE} +copy_gui_artifacts 1>> ${LOG_FILE} 2>> ${LOG_FILE} + +echo "Info: build nocodb, package nocodb-sdk and nc-gui" | tee -a ${LOG_FILE} +package_nocodb 1>> ${LOG_FILE} 2>> ${LOG_FILE} + +if [[ ${ERROR} == "" ]]; then + echo "Info: building docker image" | tee -a ${LOG_FILE} + build_image 1>> ${LOG_FILE} 2>> ${LOG_FILE} +fi + +log_message | tee -a ${LOG_FILE} diff --git a/packages/nocodb/Dockerfile.local b/packages/nocodb/Dockerfile.local index dff9c15b7d..07b3c07c00 100644 --- a/packages/nocodb/Dockerfile.local +++ b/packages/nocodb/Dockerfile.local @@ -21,6 +21,7 @@ COPY ./public/favicon.ico ./docker/public/ # install production dependencies, # reduce node_module size with modclean & removing sqlite deps, # package built code into app.tar.gz & add execute permission to start.sh +RUN npm uninstall --save nocodb-sdk RUN npm ci --omit=dev --quiet \ && npx modclean --patterns="default:*" --ignore="nc-lib-gui/**,dayjs/**,express-status-monitor/**,@azure/msal-node/dist/**" --run \ && rm -rf ./node_modules/sqlite3/deps \ diff --git a/packages/nocodb/webpack.local.config.js b/packages/nocodb/webpack.local.config.js index 60193094e9..606beb2fe2 100644 --- a/packages/nocodb/webpack.local.config.js +++ b/packages/nocodb/webpack.local.config.js @@ -42,7 +42,6 @@ module.exports = { globalObject: "typeof self !== 'undefined' ? self : this", }, node: { - fs: 'empty', __dirname: false, }, plugins: [new webpack.EnvironmentPlugin(['EE'])],