Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Deploying Elixir/Phoenix
w/ Distillery
Elixir Club Ternopil, 2017
Yaroslav Martsynyuk @ Wise Engineering
What is Distillery and What it Does?
- Elixir Release Manager
- Builds Release Tarball
- Describes the Set of Applications...
1 defp deps do
2 [{:distillery, "~> 1.2.2"}]
3 end
Add Distillery As Dependency
$> mix release.init
1 use Mix.Releases.Config,
2 default_release: :foo,
3 default_environment: Mix.env,
4
5 environment :p...
$> MIX_ENV=prod mix deps.get --only prod
$> MIX_ENV=prod mix compile
$> MIX_ENV=prod mix release [--upgrade] --env=prod
VE...
1 #! /usr/bin/env
2
3 if["$(ssh user@host /tmp/bin/demo ping)" = "pong" ]; then
4 bash ./upgrade.sh
5 else
6 cd ~/demo
7 e...
1 #! /usr/bin/env
2
3 cd ~/demo
4 export V=$(grep 'version' mix.exs | cut -d'"' -f2)
5 MIX_ENV=prod mix deps.get --only pr...
45.55.215.61 CI Node
45.55.191.102 Production Node
http://45.55.191.102:4000
Demo Time
. . .
?
Nächste SlideShare
Wird geladen in …5
×

Yaroslav Martsynyuk - Deploying Elixir/Phoenix with Distillery

206 Aufrufe

Veröffentlicht am

Elixir Club Ternopil - March 25, 2017
Friendly Restoration "Mamont"

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Yaroslav Martsynyuk - Deploying Elixir/Phoenix with Distillery

  1. 1. Deploying Elixir/Phoenix w/ Distillery Elixir Club Ternopil, 2017 Yaroslav Martsynyuk @ Wise Engineering
  2. 2. What is Distillery and What it Does? - Elixir Release Manager - Builds Release Tarball - Describes the Set of Applications It Needs to Run - Builds Upgrades
  3. 3. 1 defp deps do 2 [{:distillery, "~> 1.2.2"}] 3 end Add Distillery As Dependency
  4. 4. $> mix release.init 1 use Mix.Releases.Config, 2 default_release: :foo, 3 default_environment: Mix.env, 4 5 environment :prod do 6 set include_erts: true 7 set cookie: :prod 8 end 9 10 release :foo do 11 set version: current_version(:foo) 12 end
  5. 5. $> MIX_ENV=prod mix deps.get --only prod $> MIX_ENV=prod mix compile $> MIX_ENV=prod mix release [--upgrade] --env=prod VERSION - 1 => VERSION => VERSION + 1 Create Release/Upgrade
  6. 6. 1 #! /usr/bin/env 2 3 if["$(ssh user@host /tmp/bin/demo ping)" = "pong" ]; then 4 bash ./upgrade.sh 5 else 6 cd ~/demo 7 export V=$(grep 'version' mix.exs | cut -d'"' -f2) 8 mix release.init 9 MIX_ENV=prod mix deps.get --only prod 10 MIX_ENV=prod mix compile 11 MIX_ENV=prod mix release --env=prod 12 scp ./releases/${V}/demo.tar.gz user@host:/tmp 13 ssh user@host tar -xf demo.tar.gz -C /tmp 14 ssh user@host /tmp/bin/demo start 15 fi
  7. 7. 1 #! /usr/bin/env 2 3 cd ~/demo 4 export V=$(grep 'version' mix.exs | cut -d'"' -f2) 5 MIX_ENV=prod mix deps.get --only prod 6 MIX_ENV=prod compile 7 MIX_ENV=prod mix release --env=prod --upgrade 8 scp ./releases/${V}/demo.tar.gz user@host:/tmp/releases/${V} 9 ssh user@host /tmp/bin/demo upgrade ${VERSION}
  8. 8. 45.55.215.61 CI Node 45.55.191.102 Production Node http://45.55.191.102:4000 Demo Time
  9. 9. . . .
  10. 10. ?

×