Docker Compose Build (Developer Tutorial)
What is Docker?
Docker is an open-source platform that simplifies the process of developing, deploying, and running applications using containerization. Containers are ultralight, portable units that package an application along with its dependencies, enabling consistent execution across diverse environments, from a developer's local system to production servers. Unlike traditional virtual machines, containers utilize the host operating system's kernel, enhancing their speed and efficiency.
Docker offers a virtualized template through Docker images to create and manage sets of containers. It includes the Docker Hub, a form of container image repository. The great appeal of this technology is its scalability, portability, and efficiency, making it highly popular in DevOps and cloud-centric development workflows.
How does Docker work?
- The Docker Daemon listens for requests from the Docker Client, which may include
docker build
,docker pull
, ordocker run
. - Docker Daemon handles the creation, management, and monitoring of containers. It also retrieves the required Docker images from a registry, such as Docker Hub.
- Using the downloaded image, the daemon creates an isolated container, effectively a running instance of the application.
- Containers share the host machine's OS kernel but remain isolated from each other, enabling the software to operate in a unique environment with its dependencies.
+--------------------+
| Docker Client |
| (CLI/API) |
+--------------------+
|
v
+--------------------+ +---------------------+
| Docker Daemon | --------> | Docker Registry |
| (manages resources| | (stores images) |
| & runs containers)| +---------------------+
+--------------------+
|
v
+---------------------+
| Container |
| (App Instance) |
+---------------------+
|
v
+---------------------+
| Docker Image |
| (App Blueprint) |
+---------------------+
What is Docker Compose?
Docker Compose provides an easy way to manage a multi-container Docker application using a single file: docker-compose.yml
. This YAML file enables the configuration of multiple services, specifying aspects like Docker images, environment variables, networks, and volumes. You can utilize Docker Compose commands such as docker-compose up
or docker-compose down
to manage all containers in an application with a single action.
+--------------------------+
| docker-compose.yml | (Configuration file)
+--------------------------+
|
v
+----------------+ +----------------+ +----------------+
| Service 1 | | Service 2 | | Service 3 |
| (e.g. web) | | (e.g. db) | | (e.g. cache) |
+----------------+ +----------------+ +----------------+
| | |
-----------------------------------------
Docker Application
Docker Compose is particularly advantageous for complex applications like microservices with numerous container instances. It is effectively used across development, testing, and production settings.
Create a New React JS application With ASP.NET Core
Follow these steps to create a new Visual Studio React application with an ASP.NET Core backend and add Docker support:
Prerequisites
- Visual Studio: Ensure Visual Studio 2022 or newer is installed with necessary workloads:
- Web development and ASP.NET
- Node.js development (React)
- Docker Support
- Docker Desktop: Must be installed and running.
Create New Project
Open Visual Studio and choose New Project from the menu.
Search for "React and ASP.NET Core Web Application" in the "Create a new project" dialog and select it. Click Next.
Provide a name for the project, select a solution name, and choose the save location. Click Next.
Ensure Docker Support is enabled. Select the desired framework and click Create.
After project creation, add Docker support by right-clicking the project node and selecting Add > Docker Support.
Choose the container name and type, then click Ok.
Now that the newly created project is added to the Docker container, Docker Compose commands can run it. Below is a sample output generated from the React JS client-side code.
Below is the API server-side code executing from the Docker container.
IronSecureDoc
IronSecureDoc enables developers to efficiently embed secure document processing into containerized applications. With Docker's support, encapsulate your ASP.NET Core app using IronSecureDoc, encouraging seamless deployment and scaling. Build a Dockerfile to integrate IronSecureDoc with your ASP.NET Core app, along with necessary scripts or configurations.
Moreover, a docker-compose.yml
file can outline service dependencies and environment variables for easy access, assisting in handling document security tasks efficiently in different deployment settings. Ensuring the install and configuration of IronSecureDoc, like Docker, is essential for delivering features like document encryption and redaction.
Installing and Running IronSecureDoc
Retrieve the IronSecureDoc Docker image with this command:
docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
After pulling the image, use the following command to launch IronSecureDoc in a new container:
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
Using IronSecureDoc with Docker Container
IronSecureDoc's REST API allows document operations like redaction, certification, and encryption once installed and running in Docker. For more on API endpoints, check the documentation.
To encrypt a document, send a POST request to the IronSecureDoc API:
curl -X 'POST' \
'http://localhost:8080/v1/document-services/pdfs/encrypt?user_password=demo' \
-H 'accept: */*' \
-H 'Content-Type: multipart/form-data' \
-F 'pdf_file=@test.pdf;type=application/pdf'
curl -X 'POST' \
'http://localhost:8080/v1/document-services/pdfs/encrypt?user_password=demo' \
-H 'accept: */*' \
-H 'Content-Type: multipart/form-data' \
-F 'pdf_file=@test.pdf;type=application/pdf'
This command submits the document to IronSecureDoc for encryption.
Conclusion
Integrating Docker Compose with IronSecureDoc greatly enhances the efficiency and reliability of applications requiring secure document handling. Docker Compose effectively manages multi-container applications, streamlining dependencies and services coordination, including IronSecureDoc, which ensures development environment consistency, simplifies configurations, and boosts scalability.
In this setup, developers can fully leverage document security features, like encryption and redaction, within a containerized framework. Overall, combining Docker Compose with IronSecureDoc enriches the development process, offering a secure, efficient method for handling sensitive documents in modern applications. For information on IronSecureDoc licensing, visit this page. Click here to explore more Iron Software products.
Frequently Asked Questions
What is Docker and how does it facilitate application deployment?
Docker is an open-source platform that simplifies application development and deployment by using containers. Containers are lightweight, portable units that package an application with all its dependencies, ensuring consistent execution across various environments.
How does Docker Compose assist in managing complex applications?
Docker Compose is a tool that manages multi-container Docker applications using a `docker-compose.yml` file. It simplifies the configuration and coordination of services, images, networks, and volumes, making it ideal for managing complex applications like microservices.
What are the steps to create a React JS application with ASP.NET Core using Docker in Visual Studio?
To create a React JS application with ASP.NET Core using Docker in Visual Studio, ensure you have Visual Studio 2022 or later with necessary workloads and Docker Desktop installed. Create the project, add Docker support, and use Docker Compose commands to manage the application.
How does IronSecureDoc integrate with Docker for secure document processing?
IronSecureDoc can be integrated with Docker by pulling its Docker image and running it within a container. This setup allows for secure document processing operations like encryption and redaction through its REST API, enhancing security in containerized applications.
What are the benefits of using Docker Compose with IronSecureDoc for document processing?
Integrating Docker Compose with IronSecureDoc enhances application efficiency and reliability by managing dependencies and services in a containerized environment. It ensures secure and scalable document handling, which is crucial for applications requiring robust document security.
How do you add Docker support to an existing Visual Studio project?
To add Docker support to an existing Visual Studio project, right-click on the project node, select Add > Docker Support, and choose the appropriate container options. This integrates Docker capabilities into your project, allowing for containerized development.
What is the process for running IronSecureDoc in a Docker container?
To run IronSecureDoc in a Docker container, use the `docker pull` command to obtain the image, then execute `docker container run` with the necessary environment variables like license key and ports. This setup facilitates secure document processing within a container.
How can I encrypt a document using IronSecureDoc in a Docker environment?
You can encrypt a document using IronSecureDoc by sending a POST request to its API. Use the `curl` command to upload the document, specifying the local file path and encryption parameters. This operation secures the document within a Docker container.