diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..5d13bb1cc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,19 @@ +_build +CONTRIBUTING.md +deps +docker-compose.yml +Dockerfile +.elixir_ls +.formatter.exs +.git +.gitignore +.gitlab +.gitlab-ci.yml +.graphqlconfig.yaml +LICENSE +Makefile +README.md +SECURITY.md +ssh_match_hostname +support +.js/package-lock.json diff --git a/Dockerfile b/Dockerfile index e071ba529..18a2c18a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -FROM elixir:1.7 +FROM bitwalker/alpine-elixir:latest -RUN apt-get update && apt-get install -y build-essential inotify-tools postgresql-client +RUN apk add inotify-tools postgresql-client yarn RUN mix local.hex --force && mix local.rebar --force @@ -8,4 +8,4 @@ COPY docker/entrypoint.sh /bin/entrypoint WORKDIR /app -EXPOSE 4000 4001 4002 \ No newline at end of file +EXPOSE 4000 4001 4002 diff --git a/Makefile b/Makefile index 20eff2aa1..7e329f251 100644 --- a/Makefile +++ b/Makefile @@ -10,5 +10,12 @@ stop: @bash docker/message.sh "stopping MobiliZon" docker-compose down @bash docker/message.sh "stopped" +test: stop + @bash docker/message.sh "Building front" + docker-compose -f docker-compose.yml -f docker-compose.test.yml run front yarn run build + @bash docker/message.sh "Front built" + @bash docker/message.sh "Running tests" + docker-compose -f docker-compose.yml -f docker-compose.test.yml run api mix test + @bash docker/message.sh "Tests runned" target: init diff --git a/docker-compose.test.yml b/docker-compose.test.yml new file mode 100644 index 000000000..89f7a114a --- /dev/null +++ b/docker-compose.test.yml @@ -0,0 +1,18 @@ +version: '3' + +services: + postgres: + restart: "no" + environment: + POSTGRES_DB: mobilizon_test + front: + restart: "no" + api: + restart: "no" + environment: + MIX_ENV: "test" + MOBILIZON_DATABASE_DBNAME: mobilizon_test + command: "mix test" +volumes: + pgdata: + .: diff --git a/docker-compose.yml b/docker-compose.yml index a80eef7f5..82fed99d7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,6 @@ version: '3' services: - postgres: container_name: mobilizon_db restart: unless-stopped @@ -9,16 +8,19 @@ services: environment: POSTGRES_PASSWORD: postgres POSTGRES_DB: mobilizon_dev + volumes: + - pgdata:/var/lib/postgresql/data + front: container_name: mobilizon_front restart: unless-stopped build: ./js volumes: - - './js:/app/js' + - '.:/app' ports: - "8888:8080" - entrypoint: entrypoint + command: yarn run dev api: container_name: mobilizon_api @@ -30,10 +32,9 @@ services: - "4000:4001" depends_on: - postgres + - front environment: - # Environment: Prod when ready - MIX_ENV: dev - # Instance + MIX_ENV: "dev" MOBILIZON_INSTANCE_NAME: My Mobilizon Instance MOBILIZON_INSTANCE_HOST: mobilizon.me MOBILIZON_INSTANCE_EMAIL: noreply@mobilizon.me @@ -42,4 +43,7 @@ services: MOBILIZON_DATABASE_USERNAME: postgres MOBILIZON_DATABASE_DBNAME: mobilizon_dev MOBILIZON_DATABASE_HOST: postgres - entrypoint: entrypoint + command: "mix phx.migrate_serve" +volumes: + pgdata: + .: diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh deleted file mode 100755 index 4c3955783..000000000 --- a/docker/entrypoint.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -mix deps.get - -# Wait for Postgres to become available. -until PGPASSWORD=$MOBILIZON_DATABASE_PASSWORD psql -h $MOBILIZON_DATABASE_HOST -U $MOBILIZON_DATABASE_USERNAME -c '\q' 2>/dev/null; do - >&2 echo "Postgres is unavailable - sleeping" - sleep 1 -done - -echo "\nPostgres is available: continuing with database setup..." - -# Potentially Set up the database -mix ecto.create -mix ecto.migrate - -echo "\nTesting the installation..." -# "Proove" that install was successful by running the tests -mix test - -echo "\n Launching Phoenix web server..." -iex -S mix phx.server \ No newline at end of file diff --git a/js/Dockerfile b/js/Dockerfile index 55c74eded..d9db3df21 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -2,8 +2,9 @@ FROM node:10 LABEL maintainer="tcit" -COPY docker/entrypoint.sh /bin/entrypoint +RUN yarn install +RUN yarn upgrade node-sass WORKDIR /app/js -EXPOSE 8080 \ No newline at end of file +EXPOSE 8080 diff --git a/js/docker/entrypoint.sh b/js/docker/entrypoint.sh deleted file mode 100755 index 24be99c19..000000000 --- a/js/docker/entrypoint.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -yan install -yarn rebuild node-sass -yarn run dev diff --git a/mix.exs b/mix.exs index 6ba7bbe99..bb8e8a821 100644 --- a/mix.exs +++ b/mix.exs @@ -7,7 +7,7 @@ defmodule Mobilizon.Mixfile do [ app: :mobilizon, version: @version, - elixir: "~> 1.4", + elixir: "~> 1.8", elixirc_paths: elixirc_paths(Mix.env()), compilers: [:phoenix, :gettext] ++ Mix.compilers(), start_permanent: Mix.env() == :prod, @@ -116,7 +116,8 @@ defmodule Mobilizon.Mixfile do [ "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], "ecto.reset": ["ecto.drop", "ecto.setup"], - test: ["ecto.create --quiet", "ecto.migrate", "test"] + test: ["ecto.create --quiet", "ecto.migrate", "test"], + "phx.migrate_serve": ["ecto.create --quiet", "ecto.migrate", "phx.server"] ] end