mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-29 18:52:22 +01:00
Use Alpine Linux to built a smaller Docker image for Fab Manager
This commit is contained in:
parent
c7abd2519c
commit
592624152d
@ -5,29 +5,41 @@ vendor/cache
|
|||||||
config/database.yml
|
config/database.yml
|
||||||
config/application.yml
|
config/application.yml
|
||||||
|
|
||||||
# Ignore the default SQLite database.
|
# Ignore database files.
|
||||||
db/*.sqlite3
|
db/*.sqlite3
|
||||||
db/*.sqlite3-journal
|
db/*.sqlite3-journal
|
||||||
|
postgresql
|
||||||
|
elasticsearch
|
||||||
|
redis
|
||||||
|
|
||||||
# Ignore all logfiles and tempfiles.
|
# Ignore public assets
|
||||||
log
|
|
||||||
tmp
|
|
||||||
|
|
||||||
public/uploads
|
public/uploads
|
||||||
public/assets
|
public/assets
|
||||||
|
|
||||||
|
# Ignore all logfiles and tempfiles.
|
||||||
|
log
|
||||||
|
*.log
|
||||||
|
tmp
|
||||||
|
|
||||||
|
# Ignore platform dependent files
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
.idea
|
.idea
|
||||||
|
|
||||||
# PDF invoices
|
# PDF invoices
|
||||||
invoices
|
invoices
|
||||||
|
|
||||||
.DS_Store
|
# Development files
|
||||||
|
|
||||||
.vagrant
|
.vagrant
|
||||||
Vagrantfile
|
Vagrantfile
|
||||||
|
provision
|
||||||
.git*
|
.git*
|
||||||
|
|
||||||
Dockerfile
|
Dockerfile
|
||||||
docker-compose*
|
docker-compose*
|
||||||
|
test
|
||||||
|
|
||||||
|
# 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
|
MAINTAINER peng@sleede.com
|
||||||
|
|
||||||
# First we need to be able to fetch from https repositories
|
# Install upgrade system packages
|
||||||
RUN apt-get update && \
|
RUN apk update && apk upgrade && \
|
||||||
apt-get install -y apt-transport-https \
|
# Install runtime apk dependencies
|
||||||
ca-certificates apt-utils
|
apk add --update curl \
|
||||||
|
|
||||||
|
|
||||||
# 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 \
|
|
||||||
nodejs \
|
nodejs \
|
||||||
|
yarn \
|
||||||
|
imagemagick \
|
||||||
supervisor \
|
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 config --global frozen 1
|
||||||
|
|
||||||
# Run Bundle in a cache efficient way
|
# Install gems in a cache efficient way
|
||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
COPY Gemfile /tmp/
|
COPY Gemfile /tmp/
|
||||||
COPY Gemfile.lock /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.
|
# Clean up build deps, cached packages and temp files
|
||||||
#RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
RUN apk del .build-deps && \
|
||||||
|
yarn cache clean && \
|
||||||
|
rm -rf /tmp/* \
|
||||||
|
/var/tmp/* \
|
||||||
|
/var/cache/apk/* \
|
||||||
|
/usr/lib/ruby/gems/*/cache/*
|
||||||
|
|
||||||
# Web app
|
# Web app
|
||||||
RUN mkdir -p /usr/src/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/sockets && \
|
||||||
mkdir -p /usr/src/app/tmp/pids
|
mkdir -p /usr/src/app/tmp/pids
|
||||||
|
|
||||||
WORKDIR /usr/src/app
|
|
||||||
|
|
||||||
COPY docker/database.yml /usr/src/app/config/database.yml
|
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
|
COPY . /usr/src/app
|
||||||
|
|
||||||
# Volumes
|
# Volumes
|
||||||
@ -68,12 +72,10 @@ VOLUME /usr/src/app/public/assets
|
|||||||
VOLUME /usr/src/app/accounting
|
VOLUME /usr/src/app/accounting
|
||||||
VOLUME /var/log/supervisor
|
VOLUME /var/log/supervisor
|
||||||
|
|
||||||
# Expose port 3000 to the Docker host, so we can access it
|
# Expose port 3000 to the Docker host, so we can access it from the outside
|
||||||
# from the outside.
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
# The main command to run when the container starts. Also
|
# The main command to run when the container starts. Also tell the Rails server
|
||||||
# tell the Rails dev server to bind to all interfaces by
|
# to bind to all interfaces by default.
|
||||||
# default.
|
|
||||||
COPY docker/supervisor.conf /etc/supervisor/conf.d/fablab.conf
|
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…
x
Reference in New Issue
Block a user