From 6b51deb4997e8351db69295787cdfc25a97d9a67 Mon Sep 17 00:00:00 2001 From: Victoria Bialas Date: Wed, 27 Sep 2017 16:46:28 -0700 Subject: [PATCH] updated Compose file with absolute data path, removed scp from steps (#4734) Signed-off-by: Victoria Bialas --- get-started/images/app-in-browser-swarm.png | Bin 0 -> 36066 bytes get-started/part3.md | 18 ++++++--- get-started/part4.md | 9 ++++- get-started/part5.md | 42 ++++++++++++++------ 4 files changed, 48 insertions(+), 21 deletions(-) create mode 100644 get-started/images/app-in-browser-swarm.png diff --git a/get-started/images/app-in-browser-swarm.png b/get-started/images/app-in-browser-swarm.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7adcd7bc780d2c6f8aa2879e7f329f17db33cf GIT binary patch literal 36066 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

{F0N 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%0AnhRDrYYRi#Z>{+;ee`=jS&_Tp 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 aHlT)aZbk**Note**: At this stage, it may take up to 30 seconds for the containers to respond to HTTP -> requests. This is not indicative of Docker or swarm performance, but rather an unmet -> Redis dependency that we will address later in the tutorial. +Either way, you'll see the container ID change, demonstrating the +load-balancing; with each request, one of the 5 replicas is chosen, in a +round-robin fashion, to respond. The container IDs will match your output from +the previous command (`docker container ls -q`). + +>**Note**: At this stage, it may take up to 30 seconds for the containers +to respond to HTTP requests. This is not indicative of Docker or +swarm performance, but rather an unmet Redis dependency that we will +address later in the tutorial. For now, the visitor counter isn't working +for the same reason; we haven't yet added a service to persist data. ## Scale the app diff --git a/get-started/part4.md b/get-started/part4.md index 43f6621438..9c0e149138 100644 --- a/get-started/part4.md +++ b/get-started/part4.md @@ -381,10 +381,15 @@ like [Git Bash](https://git-for-windows.github.io/){: target="_blank" class="_"} ### Accessing your cluster You can access your app from the IP address of **either** `myvm1` or `myvm2`. + The network you created is shared between them and load-balancing. Run `docker-machine ls` to get your VMs' IP addresses and visit either of them on a -browser, hitting refresh (or just `curl` them). You'll see five possible -container IDs all cycling by randomly, demonstrating the load-balancing. +browser, hitting refresh (or just `curl` them). + +![Hello World in browser](images/app-in-browser-swarm.png) + +You'll see five possible container IDs all cycling by randomly, demonstrating +the load-balancing. The reason both IP addresses work is that nodes in a swarm participate in an ingress **routing mesh**. This ensures that a service deployed at a certain port diff --git a/get-started/part5.md b/get-started/part5.md index f417712f75..331fc0a2b8 100644 --- a/get-started/part5.md +++ b/get-started/part5.md @@ -197,7 +197,7 @@ Redis service. Be sure to replace `username/repo:tag` with your image details. ports: - "6379:6379" volumes: - - ./data:/data + - /home/docker/data:/data deploy: placement: constraints: [node.role == manager] @@ -242,26 +242,42 @@ Redis service. Be sure to replace `username/repo:tag` with your image details. docker-machine ssh myvm1 "mkdir ./data" ``` -3. This time, we need to copy over the new `docker-compose.yml` file with `docker-machine scp`: +3. Make sure your shell is configured to talk to `myvm1` (full examples are [here](part4.md#configure-a-docker-machine-shell-to-the-swarm-manager)). + + * Run `docker-machine ls` to list machines and make sure you are connected to `myvm1`, as indicated by an asterisk next it. + + * If needed, re-run `docker-machine env myvm1`, then run the given command to configure the shell. + + On **Mac or Linux** the command is: + + ```shell + eval $(docker-machine env myvm1) + ``` + + On **Windows** the command is: + + ```shell + & "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env myvm1 | Invoke-Expression + ``` + +4. Run `docker stack deploy` one more time. ```shell - $ docker-machine scp docker-compose.yml myvm1:~ + $ docker stack deploy -c docker-compose.yml getstartedlab ``` - > **Note**: Windows users will need a Linux terminal emulator like [Git -Bash](https://git-for-windows.github.io/){: target="_blank" class="_"} in order -for `docker-machine scp` to work. We are researching a better solution here, one -without the need to copy files over to the VM, but for now it seems that the -Compose file needs to be located on the VM so that it looks for `./data` in the -right place. - -4. Run `docker stack deploy` one more time, this time wrapped in `docker-machine ssh myvm1` to specifically send it to the Compose file we just placed on the manager. +5. Run `docker service ls` to verify that the three services are running as expected. ```shell - $ docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml getstartedlab" + $ docker service ls + ID NAME MODE REPLICAS IMAGE PORTS + x7uij6xb4foj getstartedlab_redis replicated 1/1 redis:latest *:6379->6379/tcp + n5rvhm52ykq7 getstartedlab_visualizer replicated 1/1 dockersamples/visualizer:stable *:8080->8080/tcp + mifd433bti1d getstartedlab_web replicated 5/5 orangesnap/getstarted:latest *:80->80/tcp + ``` -5. Check the web page at one of your nodes (e.g. `http://192.168.99.101`) and you'll see the results of the visitor counter, which is now live and storing information on Redis. +6. Check the web page at one of your nodes (e.g. `http://192.168.99.101`) and you'll see the results of the visitor counter, which is now live and storing information on Redis. ![Hello World in browser with Redis](images/app-in-browser-redis.png)