Podman Compose vs Docker Compose

In this blog, you will take a look at Podman Compose. With Podman Compose, you can use compose files according to the Compose Spec in combination with a Podman backend. Enjoy!

Introduction

A good starting point and a must-read is this blog provided by RedHat. In short, Podman Compose is not directly maintained by the Podman team, and neither is Docker Compose, of course. Podman Compose has a more limited feature set than Docker Compose and in general, it is advised to use Kubernetes YAML files for this purpose. See "Podman Equivalent for Docker Compose" for how this can be used. However, the Podman team will fix issues in Podman when required for Podman Compose. It is also possible to use Docker Compose in combination with Podman, as is described in the post "Use Docker Compose with Podman to Orchestrate Containers on Fedora Linux."

Podman Equivalent for Docker Compose

In this blog, you will learn how to use Podman with the built-in equivalent for Docker Compose. You will learn how to use Podman kube play and how to deploy your Podman pod to a local Minikube cluster. Enjoy!

Introduction

The first reaction to the short intro will be: “You need to use Podman Compose for that!” However, this blog is not about Podman Compose, but about using the basic concept of Podman by using pods and deploying them to a Kubernetes cluster. Podman Compose is a different concept and deserves its own blog.

Docker Compose vs. Kubernetes: The Top 4 Main Differences

Application deployment is cumbersome. Every project requires a specific set of tools and libraries to run correctly. Developers spend hours structuring the perfect environment during the development phase. However, when it's time to shift the project to a new server, the entire effort must take place again.

Docker helps create a portable environment. It is an open-source tool that isolates your project in the form of a container and helps with mobility. It stores your application and environment in the form of images. Since Docker uses the host OS Kernel, these images can be deployed to any new hardware of the same architecture. 

How to NGINX Reverse Proxy with Docker Compose

While developing a web application, a common method of calling the application from a local machine is through http://localhost:x ports, which essentially means that we are required to expose several ports to access different modules of the application. In the article below, we will go through the method of using Reverse Proxy to call an application and the benefits of using it.

Why Do We Need Reverse Proxy?

The most obvious reason for using Reverse Proxy is to avoid changing ports every time you try to access different modules of the application through the same URL. Through Reverse Proxy we can reach frontend, backend, or other services without changing port through a single domain. Another important reason for using Reverse Proxy is to mask services behind a proxy and avoid dealing with CORS issues.

Deploying KillBill/Kaui on OpenShift

Introduction

In this tutorial, we will guide you step-by-step on how to deploy three separate pods (the Kubernetes equivalence of a container) for KillBill, Kaui, and MariaDB on an OpenShift cluster.

Step 1: Install Docker

The recommended way of installing Docker and Docker Compose is via Docker’s repositories, for ease of installation and upgrade tasks.

NLog with Docker Compose

Hi All,

Any suggestions on how could we attach the NLog.config to a docker-compose.yml file so that it generates an NLog_Internal.txt on the host machine and we can see all the application logs in that file?
In other words, is there a way we could extract the logs of an application running inside a Docker container using NLog on a specified location (local disk or cloud)?

I have tried creating an ASP.NET Core application with the following NLog.config file:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      throwConfigExceptions="true"
      internalLogLevel="Trace"
      internalLogToConsole="true">

  <variable name="dockerlogDirectory" value="/data/logs/app"/>

  <targets>
    <target xsi:type="File" name="ownFile" fileName="${dockerlogDirectory}/MyCustomLog-${shortdate}.log"
            layout="${longdate}|${logger}|${uppercase:${level}}|${threadid}:${threadname}|${message} ${exception}" />
    <target xsi:type="Console" name="console" />
    <target xsi:type="Null" name="blackhole" />
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="console" />
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    <logger name="*" minlevel="Info" writeTo="ownFile" />
  </rules>

</nlog>

Thanks.