Re: Ci automated deploy of seaside to Digital Ocean

Norbert Hartl <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.squeak.seaside
Message-ID <[email protected]>

> Am 10.05.2018 um 23:55 schrieb Tim Mackinnon <[email protected]>:
> 
> I forgot to mention - you are correct that this isn’t a good solution for a widely use production system - as I think you would want to use a load balancer to stop traffic to one image while sessions complete before terminating it. OR - there must be some cloud based solution for this these days - presumably using docker…
> 
All of this can be done. It just depends on the learning curve you want to take. I successfully escaped the unix/linux hell (used daemontools, monti, systemd before) for my services and entered docker hell :P 
I use docker swarm and that has everything you describe above. I can deploy any number of images across all my machines with ease. There is a zero-downtime option so there is no service interruption. But the amount of time I had to put into there was massive. So while I would encourage the usage of docker I’m not sure it is for everyone. 
The medium heavy approach for you should be:

1. nginx as frontend server. This proxies all requests to a docker service traefik (https://traefik.io/ <https://traefik.io/>)
2. traefik listens on docker whenever a container is started and adds it to the load balancing routine.
3. You deploy any number of your application and they will automatically load balanced.

Norbert

> Still for hobby experiments - this and Digital Ocean seems ideal.
> 
> Tim
> 
>> On 10 May 2018, at 22:17, Tim Mackinnon <[email protected]> wrote:
>> 
>> Ah - I see (hadn’t thought about having a configurable port number),
>> 
>> So if Ive understood correctly I could install supervisord with a config file like yours.
>> 
>> Then on completion of my build, I could sftp my new image up to DO, and then execute a command like: supervisorctl restart psworker?
>> 
>> Doing a check does seem to show lots of people use either it or monit (the latter being a bit more complicated).
>> 
>> Thanks for the help - this is my next learning step.
>> 
>> Tim
>> 
>>> On 10 May 2018, at 19:47, Esteban A. Maringolo <[email protected]> wrote:
>>> 
>>> 
>>> 
>>> On 10/05/2018 15:30, Esteban A. Maringolo wrote:
>>>> How would you know when to kill the running vm+image? It might have
>>>> active sessions.
>>>> 
>>>> If you don't care about that, what I used to manage a bunch of "worker
>>>> images" (process groups) with supervisord [1], so in that case you'd
>>>> stop all the related workers, copy the new image, and start the
>>>> workers again.
>>> My supervisord.conf entry for a pool of working images was:
>>> 
>>> [program:psworker]
>>> command=/home/trentosur/perfectstore/pharo-vm/pharo --nodisplay
>>> /home/trentosur/perfectstore/ps.image worker.st 818%(process_num)1d
>>> process_name=%(program_name)s_%(process_num)02d ; process_name expr
>>> (default %(program_name)s)
>>> numprocs=2
>>> directory=/home/trentosur/perfectstore
>>> autostart=false
>>> autorestart=true
>>> user=trentosur
>>> stopasgroup=true
>>> killasgroup=true
>>> 
>>> 
>>> Part of the worker.st file handling the port number was:
>>> 
>>> "Seaside server start"
>>> Smalltalk isHeadless ifTrue: [
>>> Smalltalk commandLine arguments
>>>  ifEmpty: [
>>>    Transcript show: 'No port parameter was specified.'; cr.
>>>    Smalltalk quitPrimitive. ]
>>>  ifNotEmpty: [:args |
>>>    | port |
>>>    port := args first asNumber asInteger.
>>>    Transcript show: 'Starting worker image at port ', port asString; cr.
>>>    ZnZincServerAdaptor  startOn: port.
>>>    ZnZincServerAdaptor default server debugMode: false.
>>>  ]
>>> ]
>>> ifFalse: [
>>>    | port |
>>>    port := 8080.
>>>    Transcript show: 'Starting worker image at port ', port asString; cr.
>>>    ZnZincServerAdaptor  startOn: port.
>>>    ZnZincServerAdaptor default server debugMode: true.
>>>  ].
>>> 
>>> 
>>> I hope it helps.
>>> 
>>> Best regards,
>>> 
>>> 
>>> 
>>> -- 
>>> Esteban A. Maringolo
>>> _______________________________________________
>>> seaside mailing list
>>> [email protected]
>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>> 
>> _______________________________________________
>> seaside mailing list
>> [email protected]
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> 
> _______________________________________________
> seaside mailing list
> [email protected]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

_______________________________________________
seaside mailing list
[email protected]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.