All articles
Docker containers

Docker Deployment: How to Deploy a Web app Using Docker Web Server?

Estimated read time: 10 minutes
Sam Palmer

Sam Palmer

WriterSoftware Developer

Are you interested in Docker deployment and wondering how to deploy a web app using a Docker web server? 

Well, to start with, if you are not familiar with terms like localhost, base image, entry, debug, following docker command, env, conf, bash, workdir, repo usr/share, Nginx container, hostname, docker CLI, SSH, and SSL then it’s time to hire a developer who can help you with docker deployment of your web application.

Likewise, you should have a working knowledge of most of the following: Docker, Ubuntu, Apache, Debian, Python, Node.js, and Alpine. If not, it’s time to onboard the expertise you need.

Look no further as we have experienced developers who can help.

If you‘re a developer or involved with DevOps in any way, you‘ve definitely heard of Docker. It‘s one of the hottest technologies right now. Pretty much anyone who develops and deploys apps to the web can streamline their processes using Docker.

The popularity of Docker deployment for web apps, for example, makes this an exciting platform that you must learn about.

But what is all the hype about?

The Pain of Development Operations (DevOps)

As long as developers have been developing applications in one place and deploying them in another, DevOps has been a problem.

You know the feeling – you‘ve developed an application that runs flawlessly on your local computer and you‘re excited to get it to the world. You deploy it to your production server and… ERROR.

You have no idea why, and the problem could be one of a million things. This problem is expensive, and frustrating and ruins friendships between system administrators and developers around the world.

There are a few technologies that attempt to solve this problem. The traditional way is with Virtual Machines, but the new and improved way is with Docker Containers.

I‘m going to give an overview of how you can perform docker deployment of a web app. We‘ll start by taking a look at what Docker is (and isn‘t), what containers are, and how to use them.

What is Docker?

dockericon-min

First of all, let’s define what we’re talking about.

Docker is an open-source technology that packages your applications into ’Containers‘. These containers hold all your application code, along with all its libraries and dependencies. This allows you to run this container on any machine running Docker, and it will run exactly the same, every time.

case-study-banner-1

So, how is the Docker web application different from virtual machines?

vmware_logo-min

This is one of the common misunderstandings with Docker applications. While a virtual machine appears to do something similar, it‘s actually very different.

Virtual machines solve the same problem but in a different way. A virtual machine is a virtual instance of an entire operating system – maybe Linux or Windows. If you develop your app on a virtual instance of Linux, you can run that app anywhere that runs the same virtual instance of Linux.

Sounds good right? Yes, this does work, and it‘s been used successfully for years. There is one problem, though – if you want to deploy a single web app, you need to run an entire virtual operating system. This is very expensive, especially if you have lots of apps to run.

Docker solves this problem by placing apps in virtual Containers that all run on the same operating system. Each docker container contains all the code, libraries, and dependencies like configuration files needed to run the app. This saves us a lot of storage, time, processing power, and complexity. A container shares the kernel of the host machine with other containers.

blog-banner-download-project-specs-2

Why Would You Want to Use a Docker Web App?

As I stated in the introduction, lots of companies are using Docker for web applications. A Docker web app is a powerful base from which you can launch your application right from your web browser.

The main selling points of Docker are:

  1. Docker lets you get many more individual applications running on the same number of servers as other technologies.
  2. It makes developing encapsulated, ready-to-run applications a breeze – delivering everything in ’containers‘ that hold all libraries and dependencies for an app.
  3. It makes the whole process of managing your applications and deploying them to live servers much easier and safer. You can edit a docker app, push the new docker image to a repository using the docker images command, then instantly run that application anywhere.

Put this all together and you have a very attractive product that can make your life (and your relationships with your sys admin) a lot easier.

How to Perform Docker Deployment of an Application With Docker Containers?

An illustration of a docker container

Here‘s the basic process of developing and deploying a web app with docker:

  1. Install Docker on the machines you want to use it;
  2. Set up a registry at Docker Hub;
  3. Initiate Docker build to create your Docker Image;
  4. Set up your ’Dockerized‘ machines;
  5. Deploy your built docker image or application.

Install Docker on Your Machines

Docker makes it easy to run applications anywhere, but those places need to have Docker running. There are three main Docker variants, depending on the type of environment you are setting up:

  1. Docker Enterprise Edition (Docker EE);
  2. Docker Community Edition (Docker CE);
  3. Docker Cloud.

It‘s easy to install Docker on Mac, Windows, Linux, AWS, and Azure. Once you have it up and running on all the machines you‘ll be using, you are ready to develop and deploy.

Check out the Docker installation manual for info on how to install it on your local machine and servers.

Set Up a Registry at Docker Hub

docker-hub-getting-started-min

In order to easily distribute your applications, you‘ll need somewhere to share them.

Docker Hub is like the GitHub of Docker Containers. There are thousands of apps and examples you can use. To set up your own public or private repository to start deploying your apps, just go to the Docker Hub website.

You can use the hub to push and pull changes in your app to different machines. There are also many tools to automate this process (more on this later).

Set Up Your ’Dockerized‘ Machines

The next step is to get your Docker environment ready to run your app. You do this by using the command line and a few different tools.

These virtual machines are the ones responsible for setting up the Containers we have talked about. There are other really cool things you can do too, like setting up multiple instances of your app and using a load balancer to automatically send traffic to different versions across a cloud server.

Setting up on your local machine will be different from creating Dockerized cloud servers. Check out the official Docker tutorial on the docker commands for your environment.

Create a Docker Image

Docker Containers are created from Docker Images. To get your app distributed to different machines, you‘ll need to create a Docker Image to send to them. This is done using a Dockerfile

A Dockerfile is usually around 3-30 lines long and contains all the commands needed to create your Docker Image. There are infinite ways to set up your Dockerfile, it‘s best to know Docker deployment best practices before you set it up.

Here‘s an example of a simple Dockerfile from the Documentation:

FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Check out the docs to find out what you need to put in your Dockerfile.

Once you‘ve prepared your Dockerfile, you can use the build command-line tool to create an image. Here‘s an example of what your console might look like:

https://www.devteam.space/wp-content/uploads/2017/03/Screen-Shot-2017-03-12-at-6.33.20-pm-min.png

Docker Deployment of Your Application cports_800-min

Now you‘ve got your Docker machines running, the Docker Hub repository set up, and Docker Image built, you are ready to deploy the app across your machines.

First, push your application to your repository. You‘ll find the docker login and docker push commands useful here. Check out an example of how it‘s done here.

Next, pull your application from your repository to your other machines. You can do all of this with the docker run command. It will automatically find, pull, and run your new application.

That‘s it! Those are the steps to use Docker to easily deploy applications to multiple machines.

Automate the Process

run_anywhere-min

Obviously, you don‘t want to be running all of those docker commands every time you make a change to an application. Luckily, there are many tools to use to streamline your workflow and automate the whole Docker application deployment process.

Some examples are:

  • Google Kubernetes;
  • Dockersh;
  • Docker Compose;
  • Prometheus;
  • Lots more!

Get started with Docker, and you‘ll get a feel for what parts you want to automate. The number of servers you have and the type of app will determine your docker deployment strategy.

Getting Your Team on Board for a Successful Docker Deployment

Jesse Eisenberg, left, and Joseph Mazzello in Columbia Pictures' "The Social Network."

If your team isn‘t already using Docker, it shouldn‘t be hard to convince them. Finally, system administrators and developers won‘t blame each other when an app won‘t run properly in different environments.

A wave of recent stories has highlighted the need for startups and enterprise-level companies to use experienced professionals to ensure that their completed apps don’t contain security flaws that can jeopardize their customers’ security, and therefore, their business.

One example was highlighted very recently when it was found that Docker users were targeted with Crypto malware via exposed APIs. Security firms tracked “thousands of attempts to hijack misconfigured Docker Daemon API ports every day”, something which could have been easily prevented by expert software developers.

Don’t risk your company’s future, hire experts to ensure your success. DevTeam.Space can help you here via its field-expert software developers. You can easily partner with them by sending us your project requirements.

One of our account managers will contact you to discuss further details.

Summing Up Docker Deployment

Docker is a hot technology at the moment and for a good reason. Today we‘ve had a glimpse of how to deploy a website or application with docker, make life easier, save money and time, and maybe even save a few friendships between system administrators and developers.

I‘ve outlined the basic processes involved in getting a containerized app from your machine to a live server or cloud environment. The actual steps you‘ll take for your application will be a lot more detailed.

Check out the documentation for information on how you can follow these steps for your app, or find a great dev team that can do the job for you.

blog-banner-download-project-specs-2

Frequently Asked Questions on Docker Deployment

Can you run GUI apps in a Docker container?

VNC will allow you to easily run GUI applications inside a Docker container. Read this article to find out more.

What is a Web app for containers?

Web App for Containers (WAC) allows you to configure, deploy and run applications in containers on Windows and Linux.

How do I deploy an HTML website to a docker container?

• Using Cloud Shell;
• Build container image;
• Run your container;
• Push the Docker image to Container Registry;
• Create a GKE cluster;
• Deploy the app to GKE.

What is httpd?

Created by the Apache Foundation, Apache HTTPD is a software program that deals with incoming server requests. It automatically answers them and sends the hypertext of relevant documents via HTTP.


Alexey

Alexey Semeney

Founder of DevTeam.Space

gsma fi band

Hire Alexey and His Team
To Build a Great Product

Alexey is the founder of DevTeam.Space. He is among the Top 26 mentors of FI’s ‘Global Startup Mentor Awards’ and is a Band Of Angels Technology Expert.

Hire Expert Developers

Some of our projects

Management Center of Telecommunication Information

Backend, Communication, DevOps, Java, Software

Management Center of Telecommunication Information


Development Team

1 Designer, 2 Developers, 1 QA Engeneer
1 Project Manager, 1 Account Manager
Details
Cryptocurrency Exchange

Blockchain, Ethereum, Fintech, Javascript, React, Smart Contracts, Solidity, Trading, Truffle, Web

Cryptocurrency Exchange


Development Team

3 Developers
1 Project Manager, 1 Account Manager
Details
DDKoin

Blockchain, Ethereum, Fintech, Node.js, Smart Contracts, Solidity, Trading, Truffle

DDKoin


Development Team

3 Developers, 1 DevOps Engineer
1 Project Manager
Details

Read about DevTeamSpace:

Forbes

New Internet Unicorns Will Be Built Remotely

Huffpost

DevTeam.Space’s goal is to be the most well-organized solution for outsourcing

Inc

The Tricks To Hiring and Managing a Virtual Work Force

Business Insider

DevTeam.Space Explains How to Structure Remote Team Management

With love from Florida 🌴

Tell Us About Your Challenge & Get a Free Strategy Session

Hire Expert Developers
banner-img
Hire expert developers with DevTeam.Space to build and scale your software products

Hundreds of startups and companies like Samsung, Airbus, NEC, and Disney rely on us to build great software products. We can help you, too — 99% project success rate since 2016.