{"action":"created","issue":{"url":"https://api.github.com/repos/bitwalker/distillery/issues/74","repository_url":"https://api.github.com/repos/bitwalker/distillery","labels_url":"https://api.github.com/repos/bitwalker/distillery/issues/74/labels{/name}","comments_url":"https://api.github.com/repos/bitwalker/distillery/issues/74/comments","events_url":"https://api.github.com/repos/bitwalker/distillery/issues/74/events","html_url":"https://github.com/bitwalker/distillery/issues/74","id":176181633,"number":74,"title":"Add documentation about docker / vagrant","user":{"login":"VladShcherbin","id":6711845,"avatar_url":"https://avatars.githubusercontent.com/u/6711845?v=3","gravatar_id":"","url":"https://api.github.com/users/VladShcherbin","html_url":"https://github.com/VladShcherbin","followers_url":"https://api.github.com/users/VladShcherbin/followers","following_url":"https://api.github.com/users/VladShcherbin/following{/other_user}","gists_url":"https://api.github.com/users/VladShcherbin/gists{/gist_id}","starred_url":"https://api.github.com/users/VladShcherbin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VladShcherbin/subscriptions","organizations_url":"https://api.github.com/users/VladShcherbin/orgs","repos_url":"https://api.github.com/users/VladShcherbin/repos","events_url":"https://api.github.com/users/VladShcherbin/events{/privacy}","received_events_url":"https://api.github.com/users/VladShcherbin/received_events","type":"User","site_admin":false},"labels":[{"id":408462038,"url":"https://api.github.com/repos/bitwalker/distillery/labels/documentation","name":"documentation","color":"5319e7","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":20,"created_at":"2016-09-10T14:12:27Z","updated_at":"2016-11-01T21:06:56Z","closed_at":null,"body":"From the distillery documentation, you can get a feeling that it is super easy - just add a package, add some configuration and run a console command.\r\n\r\nUnfortunately, there is a very important note - your app must be compiled in the same environment as your production server. This step is almost missing in the docs and reading tons of information about VM's (virtual machines) is overwhelming for people, who didn't use VM before.\r\n\r\nIt would be super awesome to have a chapter or even this issue, where every novice could possibly find quick answers w/o wasting days googling.\r\n\r\n---\r\n\r\nThe task is to setup a basic app (phoenix app), make a release in VM and deploy it to production server. Since we have a chapter, how phoenix app has to be configured in the docs, we only need to setup a VM, make a release there and deploy to production server.\r\n\r\nThe production server has ubuntu 16.04. The dev server has OS X. The VM options are - vagrant and docker. If I understood correct, vagrant runs os in you prod os while docker uses just your prod os.\r\n\r\nSo, the first questions are:\r\n1) vagrant or docker, cons and pros\r\n2) dev server has to be the same as production one, what has to be the same (os, cpu, ram, os packages) ?\r\n2.1) do we need to setup docker / vagrant on production server or just copy the release tarball file?\r\n"},"comment":{"url":"https://api.github.com/repos/bitwalker/distillery/issues/comments/257697428","html_url":"https://github.com/bitwalker/distillery/issues/74#issuecomment-257697428","issue_url":"https://api.github.com/repos/bitwalker/distillery/issues/74","id":257697428,"user":{"login":"dropfen","id":2267271,"avatar_url":"https://avatars.githubusercontent.com/u/2267271?v=3","gravatar_id":"","url":"https://api.github.com/users/dropfen","html_url":"https://github.com/dropfen","followers_url":"https://api.github.com/users/dropfen/followers","following_url":"https://api.github.com/users/dropfen/following{/other_user}","gists_url":"https://api.github.com/users/dropfen/gists{/gist_id}","starred_url":"https://api.github.com/users/dropfen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dropfen/subscriptions","organizations_url":"https://api.github.com/users/dropfen/orgs","repos_url":"https://api.github.com/users/dropfen/repos","events_url":"https://api.github.com/users/dropfen/events{/privacy}","received_events_url":"https://api.github.com/users/dropfen/received_events","type":"User","site_admin":false},"created_at":"2016-11-01T21:06:56Z","updated_at":"2016-11-01T21:06:56Z","body":"@bitwalker Thank you for your response.\r\n\r\n> The fact that changes to the filesystem/environment in Docker images are transient (i.e. they are reset if the container is restarted)\r\n\r\nThats true, but my suggestion was to use the container, which would access the shared volume with the latest releases in it and run it. So there would be no state in the container, it would be just the runtime environment. And if it crashes, just run it again. We could then share some release history.txt with the latest and previous release information. After every successful upgrade the container would commit to that file and read from it on restarts.\r\n\r\nThe benefits of running your app inside a container is scoping your environment variables, and use some other docker features, like linking..\r\n\r\nBy the way, it would be interesting, to perform release upgrades from inside the app directly, over the UI ;). And then, it doesn't matter where the release is running in."}}
{"actor":{"display_login":"dropfen"}}