example_app_amber

Version, currently master branch1 version
  • master branchlatestDec 28, 2017

github.com/drhuffman12/example_app_amber

Example Hello World web app written in [Amber](https://github.com/amberframework/amber) based on their docs.

0 stars
0 dependents
License: UNLICENSED

Installation

# Add this to your shard.yml
dependencies:
  example_app_amber:
    github: drhuffman12/example_app_amber
    branch: master

master is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
0.23.1
License
UNLICENSED
Author
Amber <amberframework.org>
Targets
  • amber from lib/amber/src/amber/cli.cr
  • example_app_amber from src/example_app_amber.cr

Dependencies

Runtime Dependencies

  • pg~> 0.13.4github: will/crystal-pg
  • amber0.3.0github: amberframework/amber
  • granite_orm~> 0.7.6github: amberframework/granite-orm
  • quartz_mailer~> 0.2.0github: amberframework/quartz-mailer
  • jasper_helpers~> 0.1.6github: amberframework/jasper-helpers

Development Dependencies

  • amber_spec~> 0.1.2github: amberframework/amber-specdev

README

example_app_amber

Example Hello World web app written in Amber based on their docs.

Installation Dependancies


For Docker-compose, see:

  • https://docs.docker.com/compose/install/#install-compose

For Amber, see:

  • https://github.com/amberframework/amber

Example local setup

sudo apt-get install build-essential libreadline-dev libsqlite3-dev libpq-dev libmysqlclient-dev libssl-dev

# pip uninstall docker-py; pip uninstall docker; pip install docker
sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version # => docker-compose version 1.17.1, build 6d101fb

cd $LOCAL_DEV_FOLDER_ROOT
mkdir amberframework
cd amberframework

git clone git@github.com:amberframework/amber.git
cd amber/

# Crystal version matching what is noted in ![.shard.yml](.shard.yml)
#  e.g.: one of the below echo commands
echo "0.23.1" > .crystal-version # ... if you have 0.23.1 installed via crenv
echo "system" > .crystal-version # and have Crystal v 0.23.1 installed outside crenv

shards install
make install

Initial creation of your Amber-scaffolded application


cd $LOCAL_DEV_FOLDER_ROOT
cd $MY_PROJECTS_SUB_ROOT

amber new example_app_amber -d pg -t slang --deps
cd example_app_amber

# Crystal version matching what is noted in ![.shard.yml](.shard.yml)
#  e.g.: one of the below echo commands
echo "0.23.1" > .crystal-version # ... if you have 0.23.1 installed via crenv
echo "system" > .crystal-version # and have Crystal v 0.23.1 installed outside crenv

shards install

Dockerized


Build Docker images

docker-compose build

docker-compose

(As needed) Cleanup ALL docker images and containers

WARNING, this is for "ALL"

You might have to run these more than once until each command says something like "docker <cmd>" requires at least 1 argument(s).

Stop ALL containers

docker kill $(docker ps -q)

Remove all containers

docker rm $(docker ps -a -q)

Remove all docker images

docker rmi -f $(docker images -q)

(or all together)

docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi -f $(docker images -q)
  • View current services:
docker-compose config --services

Launch the Docker containers

If you want to watch the STDIO of the docker containers:

In a separate terminal, type:

docker-compose up
  • CTRL-c at any time should shut down the containers.

If you don't care to watch the STDIO of the docker containers:

In a terminal, type (to background it):

docker-compose up -d
  • To shutdown the docker containers, type:
docker-compose stop app

Verify that your docker containers are up and running

To view the running containers, type:

$ docker-compose ps

This should show something like:

$ docker-compose ps
          Name                         Command               State                 Ports
------------------------------------------------------------------------------------------------------
exampleappamber_app_1       amber watch                      Up       0.0.0.0:3000->3000/tcp
exampleappamber_db_1        docker-entrypoint.sh postgres    Up       5432/tcp
exampleappamber_mail_1      mailcatcher -f --ip 0.0.0.0      Up       1025/tcp, 0.0.0.0:1080->1080/tcp
exampleappamber_migrate_1   bash -c while ! nc -q 1 db ...   Exit 1
exampleappamber_web_1       bash -c npm install && npm ...   Up

Browse your starter-app

bin/browse_web_app.sh

It should look something like

doc/initial-amber-web-app.png

Shell into your launched dockerized app

In your terminal for shelling into your dockerized app, type:

docker-compose exec app /bin/bash

... and then run your commands as needed, e.g.:

$ docker-compose exec app /bin/bash
root@52e3ac23eb0a:/app/local# pwd
/app/local
root@52e3ac23eb0a:/app/local# ls
Dockerfile  LICENSE  README.md  bin  config  docker-compose.yml  example_app_amber  initial-amber-web-app.png  lib  node_modules  package.json  public  scratch.sh  shard.lock  shard.yml  spec  src