mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-28 09:24:24 +01:00
Use Alpine Linux to built a smaller Docker image for Fab Manager
This commit is contained in:
parent
3d54198d35
commit
a21594db43
@ -5,12 +5,16 @@ vendor/cache
|
||||
config/database.yml
|
||||
config/application.yml
|
||||
|
||||
# Ignore the default SQLite database.
|
||||
# Ignore database files.
|
||||
db/*.sqlite3
|
||||
db/*.sqlite3-journal
|
||||
postgresql
|
||||
elasticsearch
|
||||
redis
|
||||
|
||||
# Ignore all logfiles and tempfiles.
|
||||
log
|
||||
*.log
|
||||
tmp
|
||||
|
||||
public/uploads
|
||||
@ -24,10 +28,17 @@ invoices
|
||||
|
||||
.DS_Store
|
||||
|
||||
# Development files
|
||||
.vagrant
|
||||
Vagrantfile
|
||||
|
||||
provision
|
||||
.git*
|
||||
|
||||
Dockerfile
|
||||
docker-compose*
|
||||
|
||||
# Docs
|
||||
*.md
|
||||
doc
|
||||
|
||||
# Modules
|
||||
node_modules
|
||||
|
80
Dockerfile
80
Dockerfile
@ -1,40 +1,52 @@
|
||||
FROM ruby:2.3
|
||||
FROM ruby:2.3.8-alpine
|
||||
MAINTAINER peng@sleede.com
|
||||
|
||||
# First we need to be able to fetch from https repositories
|
||||
RUN apt-get update && \
|
||||
apt-get install -y apt-transport-https \
|
||||
ca-certificates apt-utils
|
||||
|
||||
|
||||
# Add sources for external tools to APT
|
||||
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||
curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list && \
|
||||
echo "deb https://deb.nodesource.com/node_10.x jessie main" > /etc/apt/sources.list.d/nodesource.list && \
|
||||
echo "deb-src https://deb.nodesource.com/node_10.x jessie main" >> /etc/apt/sources.list.d/nodesource.list
|
||||
|
||||
# Install apt based dependencies required to run Rails as
|
||||
# well as RubyGems. As the Ruby image itself is based on a
|
||||
# Debian image, we use apt-get to install those.
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
# Install upgrade system packages
|
||||
RUN apk update && apk upgrade && \
|
||||
# Install runtime apk dependencies
|
||||
apk add --update curl \
|
||||
nodejs \
|
||||
yarn \
|
||||
imagemagick \
|
||||
supervisor \
|
||||
yarn
|
||||
tzdata \
|
||||
libc-dev \
|
||||
ruby-dev \
|
||||
zlib-dev \
|
||||
xz-dev \
|
||||
postgresql-dev \
|
||||
libxml2-dev \
|
||||
libxslt-dev \
|
||||
libidn-dev && \
|
||||
# Install buildtime apk dependencies
|
||||
apk add --update --no-cache --virtual .build-deps alpine-sdk \
|
||||
build-base \
|
||||
linux-headers \
|
||||
git \
|
||||
patch
|
||||
|
||||
# throw errors if Gemfile has been modified since Gemfile.lock
|
||||
# Throw error if Gemfile has been modified since Gemfile.lock
|
||||
RUN bundle config --global frozen 1
|
||||
|
||||
# Run Bundle in a cache efficient way
|
||||
# Install gems in a cache efficient way
|
||||
WORKDIR /tmp
|
||||
COPY Gemfile /tmp/
|
||||
COPY Gemfile.lock /tmp/
|
||||
RUN bundle install --binstubs
|
||||
RUN bundle install --binstubs --without development test doc
|
||||
|
||||
# Install Javascript packages
|
||||
WORKDIR /usr/src/app
|
||||
COPY package.json /usr/src/app/package.json
|
||||
COPY yarn.lock /usr/src/app/yarn.lock
|
||||
RUN yarn install
|
||||
|
||||
# Clean up APT when done.
|
||||
#RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
# Clean up build deps, cached packages and temp files
|
||||
RUN apk del .build-deps && \
|
||||
yarn cache clean && \
|
||||
rm -rf /tmp/* \
|
||||
/var/tmp/* \
|
||||
/var/cache/apk/* \
|
||||
/usr/lib/ruby/gems/*/cache/*
|
||||
|
||||
# Web app
|
||||
RUN mkdir -p /usr/src/app && \
|
||||
@ -48,15 +60,7 @@ RUN mkdir -p /usr/src/app && \
|
||||
mkdir -p /usr/src/app/tmp/sockets && \
|
||||
mkdir -p /usr/src/app/tmp/pids
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
COPY docker/database.yml /usr/src/app/config/database.yml
|
||||
COPY package.json /usr/src/app/package.json
|
||||
COPY yarn.lock /usr/src/app/yarn.lock
|
||||
|
||||
# Run Yarn
|
||||
RUN yarn install
|
||||
|
||||
COPY . /usr/src/app
|
||||
|
||||
# Volumes
|
||||
@ -68,12 +72,10 @@ VOLUME /usr/src/app/public/assets
|
||||
VOLUME /usr/src/app/accounting
|
||||
VOLUME /var/log/supervisor
|
||||
|
||||
# Expose port 3000 to the Docker host, so we can access it
|
||||
# from the outside.
|
||||
# Expose port 3000 to the Docker host, so we can access it from the outside
|
||||
EXPOSE 3000
|
||||
|
||||
# The main command to run when the container starts. Also
|
||||
# tell the Rails dev server to bind to all interfaces by
|
||||
# default.
|
||||
# The main command to run when the container starts. Also tell the Rails server
|
||||
# to bind to all interfaces by default.
|
||||
COPY docker/supervisor.conf /etc/supervisor/conf.d/fablab.conf
|
||||
CMD ["/usr/bin/supervisord"]
|
||||
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/fablab.conf"]
|
||||
|
Loading…
Reference in New Issue
Block a user