mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-29 10:12:34 +00:00
* chore: update to ruby 3.1.3
* chore: ping docker version to alpine3.16 for nodev16.x
Starting with Node 17, nodejs switched to OpenSSL3. The docker builds
are installing node18.xx with alpine-3.1.3.
From Node.js 17's announcement post:
If you hit an ERR_OSSL_EVP_UNSUPPORTED error in your application
with Node.js 17, it’s likely that your application or a module you’re
using is attempting to use an algorithm or key size which is no longer
allowed by default with OpenSSL 3.0. A new command-line option,
--openssl-legacy-provider, has been added to revert to the legacy
provider as a temporary workaround for these tightened restrictions.
Looks like a webpack issue. This is fixed in webpacl 5+ and we are on
webpack4 at the moment.
Solutions
Upgrade webpack.
Pin nodejs version to be 16.x.x
Use --openssl-legacy-provider as a workaround.
Pin docker version to alpine3.16 branch to have node16.x by default
ref:
https://github.com/chatwoot/chatwoot/pull/5555#issuecomment-1379778532
* chore: update webmock
* chore: fix ruby gem path in dockerfile
* chore: switch to node16 in circleci
* chore: update ruby version in linux installer script
* chore: update ruby version in linux installer script
* chore: fix circleci
* chore: fix circleci
* feat: upgrade node version to 16.x in linux installer
* chore: update systemd files
Co-authored-by: Sojan Jose <sojan@chatwoot.com>
106 lines
2.7 KiB
Docker
106 lines
2.7 KiB
Docker
# pre-build stage
|
|
FROM ruby:3.1.3-alpine3.16 AS pre-builder
|
|
|
|
# ARG default to production settings
|
|
# For development docker-compose file overrides ARGS
|
|
ARG BUNDLE_WITHOUT="development:test"
|
|
ENV BUNDLE_WITHOUT ${BUNDLE_WITHOUT}
|
|
ENV BUNDLER_VERSION=2.1.2
|
|
|
|
ARG RAILS_SERVE_STATIC_FILES=true
|
|
ENV RAILS_SERVE_STATIC_FILES ${RAILS_SERVE_STATIC_FILES}
|
|
|
|
ARG RAILS_ENV=production
|
|
ENV RAILS_ENV ${RAILS_ENV}
|
|
|
|
ENV BUNDLE_PATH="/gems"
|
|
|
|
RUN apk add --no-cache \
|
|
openssl \
|
|
tar \
|
|
build-base \
|
|
tzdata \
|
|
postgresql-dev \
|
|
postgresql-client \
|
|
nodejs \
|
|
yarn \
|
|
git \
|
|
&& mkdir -p /var/app \
|
|
&& gem install bundler
|
|
|
|
WORKDIR /app
|
|
|
|
COPY Gemfile Gemfile.lock ./
|
|
|
|
# natively compile grpc and protobuf to support alpine musl (dialogflow-docker workflow)
|
|
# https://github.com/googleapis/google-cloud-ruby/issues/13306
|
|
# adding xz as nokogiri was failing to build libxml
|
|
# https://github.com/chatwoot/chatwoot/issues/4045
|
|
RUN apk add --no-cache musl ruby-full ruby-dev gcc make musl-dev openssl openssl-dev g++ linux-headers xz
|
|
RUN bundle config set --local force_ruby_platform true
|
|
|
|
# Do not install development or test gems in production
|
|
RUN if [ "$RAILS_ENV" = "production" ]; then \
|
|
bundle config set without 'development test'; bundle install -j 4 -r 3; \
|
|
else bundle install -j 4 -r 3; \
|
|
fi
|
|
|
|
COPY package.json yarn.lock ./
|
|
RUN yarn install
|
|
|
|
COPY . /app
|
|
|
|
# creating a log directory so that image wont fail when RAILS_LOG_TO_STDOUT is false
|
|
# https://github.com/chatwoot/chatwoot/issues/701
|
|
RUN mkdir -p /app/log
|
|
|
|
# generate production assets if production environment
|
|
RUN if [ "$RAILS_ENV" = "production" ]; then \
|
|
SECRET_KEY_BASE=precompile_placeholder RAILS_LOG_TO_STDOUT=enabled bundle exec rake assets:precompile \
|
|
&& rm -rf spec node_modules tmp/cache; \
|
|
fi
|
|
|
|
# Remove unnecessary files
|
|
RUN rm -rf /gems/ruby/3.1.0/cache/*.gem \
|
|
&& find /gems/ruby/3.1.0/gems/ \( -name "*.c" -o -name "*.o" \) -delete
|
|
|
|
# final build stage
|
|
FROM ruby:3.1.3-alpine3.16
|
|
|
|
|
|
ARG BUNDLE_WITHOUT="development:test"
|
|
ENV BUNDLE_WITHOUT ${BUNDLE_WITHOUT}
|
|
ENV BUNDLER_VERSION=2.1.2
|
|
|
|
ARG EXECJS_RUNTIME="Disabled"
|
|
ENV EXECJS_RUNTIME ${EXECJS_RUNTIME}
|
|
|
|
ARG RAILS_SERVE_STATIC_FILES=true
|
|
ENV RAILS_SERVE_STATIC_FILES ${RAILS_SERVE_STATIC_FILES}
|
|
|
|
ARG BUNDLE_FORCE_RUBY_PLATFORM=1
|
|
ENV BUNDLE_FORCE_RUBY_PLATFORM ${BUNDLE_FORCE_RUBY_PLATFORM}
|
|
|
|
ARG RAILS_ENV=production
|
|
ENV RAILS_ENV ${RAILS_ENV}
|
|
ENV BUNDLE_PATH="/gems"
|
|
|
|
RUN apk add --no-cache \
|
|
openssl \
|
|
tzdata \
|
|
postgresql-client \
|
|
imagemagick \
|
|
git \
|
|
&& gem install bundler
|
|
|
|
RUN if [ "$RAILS_ENV" != "production" ]; then \
|
|
apk add --no-cache nodejs yarn; \
|
|
fi
|
|
|
|
COPY --from=pre-builder /gems/ /gems/
|
|
COPY --from=pre-builder /app /app
|
|
|
|
WORKDIR /app
|
|
|
|
EXPOSE 3000
|