Last active
April 12, 2025 09:08
-
-
Save dogweather/a2063b37c448584ca26be8fb69ed2b29 to your computer and use it in GitHub Desktop.
Elixir/Phoenix Docker-based Development Environment
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: '3.2' | |
services: | |
db: | |
image: postgres | |
web: | |
build: . | |
volumes: | |
- type: bind | |
source: . | |
target: /app | |
ports: | |
- "4000:4000" | |
depends_on: | |
- db | |
command: | |
- ./run.sh |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Elixir + Phoenix | |
FROM elixir:1.6.1 | |
# Install debian packages | |
RUN apt-get update | |
RUN apt-get install --yes build-essential inotify-tools postgresql-client | |
# Install Phoenix packages | |
RUN mix local.hex --force | |
RUN mix local.rebar --force | |
RUN mix archive.install --force https://github.com/phoenixframework/archives/raw/master/phx_new.ez | |
# Install node | |
RUN curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh | |
RUN bash nodesource_setup.sh | |
RUN apt-get install nodejs | |
WORKDIR /app | |
EXPOSE 4000 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Adapted from Alex Kleissner's post, Running a Phoenix 1.3 project with docker-compose | |
# https://medium.com/@hex337/running-a-phoenix-1-3-project-with-docker-compose-d82ab55e43cf | |
set -e | |
# Ensure the app's dependencies are installed | |
mix deps.get | |
# Prepare Dialyzer if the project has Dialyxer set up | |
if mix help dialyzer >/dev/null 2>&1 | |
then | |
echo "\nFound Dialyxer: Setting up PLT..." | |
mix do deps.compile, dialyzer --plt | |
else | |
echo "\nNo Dialyxer config: Skipping setup..." | |
fi | |
# Install JS libraries | |
echo "\nInstalling JS..." | |
cd assets && npm install | |
cd .. | |
# Wait for Postgres to become available. | |
until psql -h db -U "postgres" -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..." | |
# Start the phoenix web server | |
mix phx.server |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment