zend server in docker swarm: deployment and more€¦ · 2017-10-26 · zend server in docker...
TRANSCRIPT
ZENDSERVERINDOCKERSWARM:DEPLOYMENTANDMORE
JanBurklSolutionConsultingManager
,LasVegas,October26th2017
RogueWaveSoftware
ZendCon2017
DOCKERFILE(PROD)FROMphp:7.0-fpm
RUNapt-getupdate&&apt-getinstall-ygitlibcurl4-gnutls-devzlib1g-devlibicu-devg++libxml2-devlibpq-dev\&&gitclone-bphp7https://github.com/phpredis/phpredis.git/usr&&docker-php-ext-installredis\&&apt-getautoremove&&apt-getautoclean\&&rm-rf/var/lib/apt/lists/*
#-------------------------------------------------------------------------------#Appsources#-------------------------------------------------------------------------------COPY./app/
DOCKERFILE(DEV)FROMjanatzend/particulum-mobile-backend
WORKDIR/ADDhttp://www.zend.com/en/download/4843?start=true/zend-debuggerRUN\echozend_extension=/zend-debugger/ZendDebugger-linux-x86_64/php-7.0.x/ZendDebugger.so>>/usr/echozend_debugger.allow_from_all=1>>/usr/local/etc/php/php.ini
NGINXCONTAINER$dockerrun-d--namenginx\-v"$PWD:/app"\-v"$PWD/etc/nginx.site.conf:/etc/nginx/conf.d/default.conf"\--linkphp:php\-p8888:80\particulummobile-dev/backend-nginx
version:"3"
services:
#-------------------------------------------------------------------------------#Nginx#-------------------------------------------------------------------------------nginx:build:context:"${PROJECTS_PATH}/${BACKEND_APP_DIR}"dockerfile:Dockerfile.nginximage:particulummobile-dev/backend-nginxvolumes:-"${PROJECTS_PATH}/${BACKEND_APP_DIR}/etc/nginx.site.conf:/etc/nginx/conf.d/default.conf"-"${PROJECTS_PATH}/${BACKEND_APP_DIR}:/app"networks:backend-net:
DOCKERSWARM(MODE)“CurrentversionsofDockerinclude
swarmmodefornativelymanagingaclusterofDockerEnginescalleda
swarm.UsetheDockerCLItocreateaswarm,deployapplicationservicesto
aswarm,andmanageswarmbehavior.”
Swarminitialized:currentnode(ww4nime7fbh9twrzzl7o2t31f)isnow
Toaddaworkertothisswarm,runthefollowingcommand:
dockerswarmjoin\--tokenSWMTKN-1-2aps743f7wzjz6xp3vnlicpkim9ge2ykwvxkmkg7mep9ou0ie7-0vm4vc0e1q6ggj5auorm4vixd\192.168.33.101:2377
Toaddamanagertothisswarm,run'dockerswarmjoin-tokenmanager'
ROUTINGMESH“Theroutingmeshenableseachnode
intheswarmtoacceptconnectionsonpublishedportsforanyservice
runningintheswarm,evenifthere’snotaskrunningonthenode.”
CREATESERVICE
$dockerservicecreate\--name=viz\--publish=8080:8080/tcp\--constraint=node.role==manager\--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/dockerdockersamples/visualizer
WEBAPI./etc/shell_functions.rc
WEB_API_KEY=dockerWEB_API_SECRET=$(cat/webapi/secret)
ZS_MANAGE=/usr/local/zend/bin/zs-manage
CONFIGIMPORT(BUILDTIME)$ZS_CLIENT_AconfigurationImport\--configFile="/zs_config.zip"\--output-format="kv"
JOININGCLUSTER$ZS_MANAGEserver-add-to-cluster\-n$HOSTNAME\-i$IP\-o$DB_HOST:3306-u$DB_USER-p$DB_PASS-d$DB_NAME\-N$WEB_API_KEY-K$WEB_API_SECRET-s
LEAVINGCLUSTER$ZS_MANAGEcluster-disable-server\$SERVER_ID-N$WEB_API_KEY-K$WEB_API_SECRET-s
$ZS_MANAGEcluster-remove-server\$SERVER_ID-N$WEB_API_KEY-K$WEB_API_SECRET-f
SESSIONCLUSTERING$ZS_MANAGEstore-directive\-d'session.save_handler'-v'cluster'\-N$WEB_API_KEY-K$WEB_API_SECRET
HEALTHCHECK$ZS_CLIENTclusterGetServerStatus\--servers=$(cat/usr/local/zend/etc/conf.d/ZendGlobalDirectives.ini|grepzend.node_id|awk-F--zsurl="http://localhost:10081"\--zskey=$WEB_API_KEY--zssecret=$WEB_API_SECRET\--output-format=kv\|grepstatus|grepOK||exit1
UPDATE$dockerserviceupdatepm-zs_php--help
Usage: dockerserviceupdate[OPTIONS]SERVICE
Updateaservice
Options:--argscommandServicecommandargs--config-addconfigAddorupdateaconfigfileonaservice--config-rmlistRemoveaconfigurationfile--constraint-addlistAddorupdateaplacementconstraint--constraint-rmlistRemoveaconstraint--container-label-addlistAddorupdateacontainerlabel--container-label-rmlistRemoveacontainerlabelbyitskey--credential-speccredential-specCredentialspecformanagedserviceaccount(Windowsonly)-d,--detachExitimmediatelyinsteadofwaiting
DANKESCHÖN
Slides:
Contactme:jan.burkl[at]roguewave.com
Followme:
bitbucket.org/account/user/5square-rw/projects/PM
5square.de/talks
@janatzend