Skip to content
Snippets Groups Projects
Verified Commit c6ed3164 authored by Gaëtan Blond's avatar Gaëtan Blond
Browse files

[Mobilizon] Added dockerfiles

parent 261494cd
No related branches found
No related tags found
1 merge request!55Mobilizon
# inspired from https://framagit.org/Windyo/mobilizon/-/blob/a1e0b9730e9c63de6058c3f5d803b2743efafed4/docker/app/Dockerfile
# **** Temporary docker image ****
# elixir version MUST match
FROM elixir:1.10.4 as builder
ARG MOBILIZON_GIT_URL
ARG MOBILIZON_GIT_TAG
ARG NODE_V
ENV MIX_ENV prod
ENV INSTANCE_CONFIG prod
RUN apt-get update -y \
&& apt-get install -y apt-utils \
&& curl -sL https://deb.nodesource.com/setup_"$NODE_V".x | bash - \
&& apt-get install -y nodejs build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 python3-pip cmake \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& npm install -g yarn wait-on
RUN useradd -ms /bin/bash -p ! mobilizon
USER mobilizon
WORKDIR /home/mobilizon
COPY ./prod.secret.exs /home/mobilizon/build/config/
RUN git clone -b "$MOBILIZON_GIT_TAG" "$MOBILIZON_GIT_URL" ./build
WORKDIR /home/mobilizon/build
RUN mix local.hex --force \
&& mix local.rebar --force
RUN mix deps.get
RUN mix deps.compile
RUN mix compile
WORKDIR /home/mobilizon/build/js
RUN yarn install \
&& yarn run build
WORKDIR /home/mobilizon/build
RUN rm -rf ./.dockerignore ./.gitignore ./.gitlab-ci.yml ./CHANGELOG.md ./CONTRIBUTING.md ./docker ./docker-compose.test.yml ./docker-compose.yml ./Dockerfile ./docs ./js ./Makefile ./README.md ./SECURITY.md ./setup_db.psql ./support \
&& curl https://dbip.mirror.framasoft.org/files/dbip-city-lite-latest.mmdb --output GeoLite2-City.mmdb -s \
&& mv GeoLite2-City.mmdb /home/mobilizon/build/priv/data/GeoLite2-City.mmdb
# Final docker image
FROM elixir:1.10.4-alpine
ENV INIT=FALSE \
ADMIN_EMAIL=test@test.com \
ADMIN_PASSWORD=passwd \
MIX_ENV=prod \
INSTANCE_CONFIG=prod
RUN addgroup -S mobilizongr && adduser -s /bin/bash -S mobilizon -G mobilizongr
RUN apk update && apk add --update git && rm-rf /tmp/* /var/tmp/*
COPY --from=builder /home/mobilizon/build/ /home/mobilizon/live/
COPY --from=builder /home/mobilizon/.mix/ /home/mobilizon/.mix/
COPY ./entrypoint.sh /home/mobilizon/entrypoint.sh
RUN chmod +x /home/mobilizon/entrypoint.sh
WORKDIR /home/mobilizon/live
USER mobilizon
ENTRYPOINT [ "/home/mobilizon/entrypoint.sh" ]
#!/bin/bash
set -e
export MIX_ENV=prod
if [ "$INIT" = TRUE ]; then
echo "Initialization. Only run this once."
mix ecto.migrate
mix mobilizon.users.new "$ADMIN_EMAIL" --admin --password "$ADMIN_PASSWORD"
mix phx.server
else
echo "Running normal mode."
mix ecto.migrate --no-deps-check
mix phx.server --no-deps-check
fi
exec "$@"
# Mobilizon instance configuration
# Via Thomas Clavier
# Warning : cfg is overrided by the ../docker-compose.yml and ../secrets/*.secrets files
import Config
config :mobilizon, Mobilizon.Web.Endpoint,
url: [host: System.get_env("MOBILIZON_INSTANCE_HOST", "mobilizon.lan")],
http: [port: System.get_env("MOBILIZON_INSTANCE_LISTEN_PORT", "4000")],
secret_key_base: System.get_env("MOBILIZON_SECRET_KEY_BASE", "ZcvexeC7cnwtKR8ADMBDwrYu2aYHUyjrOu4yA181Z112HNu/I5jyRleo4hoxOMqQ")
config :mobilizon, Mobilizon.Web.Auth.Guardian,
secret_key: System.get_env("MOBILIZON_SECRET_KEY", "KsdUIvp6hQ7b97yxUZcDQyGH0g4LS3fF0OvIsIATpkKzd1MDvSS4KexWXsjXeMQZ")
config :mobilizon, :instance,
name: System.get_env("MOBILIZON_INSTANCE_NAME", "Mobilizon"),
description: "Change this to a proper description of your instance",
hostname: System.get_env("MOBILIZON_INSTANCE_HOST", "mobilizon.lan"),
registrations_open: System.get_env("MOBILIZON_INSTANCE_REGISTRATIONS_OPEN", "false"),
demo: false,
allow_relay: true,
federating: true,
email_from: System.get_env("MOBILIZON_INSTANCE_EMAIL", "noreply@mobilizon.lan"),
email_reply_to: System.get_env("MOBILIZON_INSTANCE_EMAIL", "noreply@mobilizon.lan")
config :mobilizon, Mobilizon.Storage.Repo,
adapter: Ecto.Adapters.Postgres,
username: System.get_env("MOBILIZON_DATABASE_USERNAME", "username"),
password: System.get_env("MOBILIZON_DATABASE_PASSWORD", "password"),
database: System.get_env("MOBILIZON_DATABASE_DBNAME", "mobilizon"),
hostname: System.get_env("MOBILIZON_DATABASE_HOST", "postgres"),
port: System.get_env("MOBILIZON_DATABASE_PORT", "5432"),
pool_size: 10
config :mobilizon, Mobilizon.Web.Email.Mailer,
adapter: Bamboo.SMTPAdapter,
server: System.get_env("MOBILIZON_SMTP_SERVER", "localhost"),
hostname: System.get_env("MOBILIZON_SMTP_HOSTNAME", "localhost"),
port: System.get_env("MOBILIZON_SMTP_PORT", "25"),
username: System.get_env("MOBILIZON_SMTP_USERNAME", nil),
password: System.get_env("MOBILIZON_SMTP_PASSWORD", nil),
# can be `:always` or `:never`
tls: :if_available,
allowed_tls_versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"],
# can be `true`
ssl: System.get_env("MOBILIZON_SMTP_SSL", "false"),
retries: 1,
# can be `true`
no_mx_lookups: false,
# can be `:always`. If your smtp relay requires authentication set it to `:always`.
auth: :if_available
FROM postgres:12-alpine
ARG POSTGRES_DB
RUN apk update \
&& apk add --update postgis \
&& rm -rf /tmp/* /var/tmp/*
RUN printf "\\c "$POSTGRES_DB" \n CREATE EXTENSION postgis; \n CREATE EXTENSION pg_trgm; \n CREATE EXTENSION unaccent;" > /docker-entrypoint-initdb.d/setup.sql
INIT=FALSE
ADMIN_EMAIL=your@email.com
ADMIN_PASSWORD=yourpasswordtologin
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment