Improve cache behaviour

This commit is contained in:
Lukas Breuer 2018-04-09 11:55:52 +02:00
parent 3906f8aabb
commit aeef7b01e9
No known key found for this signature in database
GPG Key ID: 7152BD8370E46753
4 changed files with 44 additions and 28 deletions

View File

@ -31,7 +31,6 @@ services:
dockerfile: ./pleroma.dockerfile
args:
env(`pleroma_version')
env_fb(`mix_env', `prod')
restart: unless-stopped
links:
- db

View File

@ -2,6 +2,24 @@
set -e
function compile {
# Make sure that the tooling is present
mix local.hex --force
mix local.rebar --force
# Recompile
mix deps.get
mix compile
}
# Execute onbuild actions if required
if [[ "$1" == "onbuild" ]]; then
# On build we use the sources instead of the runtime
cd /pleroma
compile
exit 0
fi
# Ensure that the environment is clean
if [[ -d /pleroma-runtime ]]; then
rm -rf /pleroma-runtime
@ -17,13 +35,8 @@ rsync -azI /custom.d/ /pleroma-runtime/
# Go to runtime workspace
cd /pleroma-runtime
# Make sure that the tooling is present
mix local.hex --force
mix local.rebar --force
# Recompile
mix deps.get
mix clean && mix compile
# Build
compile
# Prepare DB
mix ecto.create

17
pleroma
View File

@ -34,20 +34,6 @@ Actions:
"
}
function run_dockerized {
log_info "Stopping existing containers (if any)"
docker-compose down
log_info "Rebuilding images"
docker-compose build
log_info "Running action '$1'"
docker-compose run server $1
log_info "Cleaning up.."
docker-compose down
}
function action__start {
log_info "Booting pleroma"
docker-compose up --remove-orphans -d
@ -65,7 +51,8 @@ function action__logs {
}
function action__build {
docker-compose build
docker-compose pull
docker-compose build --build-arg __BUST_CACHE="$(date)" server
}
function action__enter {

View File

@ -1,25 +1,42 @@
FROM elixir:1.6-alpine
WORKDIR /pleroma
env MIX_HOME /mix
env MIX_ARCHIVES /mix-archives
# Prepare system
RUN apk add --no-cache --virtual .build alpine-sdk git rsync
# Perform a clone that can be cached
RUN git clone https://git.pleroma.social/pleroma/pleroma.git .
WORKDIR /pleroma
RUN git clone --progress https://git.pleroma.social/pleroma/pleroma.git .
# Prepare pleroma
ADD ./docker-config.exs /docker-config.exs
# Bust the cache with a build arg
# that is different on every build
ARG __BUST_CACHE
ENV __BUST_CACHE $__BUST_CACHE
# Update pleroma
ARG PLEROMA_VERSION
RUN \
git checkout $PLEROMA_VERSION && \
git pull --rebase --autostash && \
git pull --rebase --autostash
# Inject config
ADD ./docker-config.exs /docker-config.exs
RUN \
ln -s /docker-config.exs config/prod.secret.exs && \
ln -s /docker-config.exs config/dev.secret.exs
# Correct paths
WORKDIR /
VOLUME /custom.d
# Register entrypoint
ADD ./entrypoint.ash /
RUN chmod +x /entrypoint.ash
CMD ["/entrypoint.ash"]
# Call entrypoint to precompile pleroma
RUN /entrypoint.ash onbuild
EXPOSE 4000