diff --git a/docker-compose.m4 b/docker-compose.m4 index 97ee844..619b1fb 100644 --- a/docker-compose.m4 +++ b/docker-compose.m4 @@ -31,7 +31,6 @@ services: dockerfile: ./pleroma.dockerfile args: env(`pleroma_version') - env_fb(`mix_env', `prod') restart: unless-stopped links: - db diff --git a/entrypoint.ash b/entrypoint.ash index 17d6590..89d9337 100755 --- a/entrypoint.ash +++ b/entrypoint.ash @@ -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 diff --git a/pleroma b/pleroma index 4f5f819..fd7c165 100755 --- a/pleroma +++ b/pleroma @@ -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 { diff --git a/pleroma.dockerfile b/pleroma.dockerfile index f738eef..9335692 100644 --- a/pleroma.dockerfile +++ b/pleroma.dockerfile @@ -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