Rails docker best practices

Best practices when writing a Dockerfile for a Ruby

Best practices when writing a Dockerfile for a Ruby application The simplicity of the Dockerfile format is one of the reasons why Docker managed to become so popular in the first place. Getting something working is fairly easy. Producing a clean, small, secure image that will not leak secrets might not be as straight-forward though If Rails is part of your stack, this blog will explain to you how to dockerize your Rails application. This blog is not a docker tutorial, yet you will be instructed with some best practices with. What is Docker? Docker allows you to package up an application or service with all of its dependencies into a standardized unit. This unit is typically labeled as a Docker image. Everything the application needs to run is included. The Docker image contains the code, runtime, system libraries and anything else you would install on a server to make it run if you weren't using Docker Using Docker for Rails may be the way to go. Refer this for best Docker Container tools and resources. Container Adoption Trends & Best Practices: The DevGraph Webinar Series. May 13, 2021. Services, the Missing Element in Rails Applications: A Discussion with Riaz Virani It's helpful to read the Docker overview and Docker best practices as a refresher if needed. Creating the Application Dockerfile. In order to create a Rails application in docker, it's important to select the proper base image

The very last step before we can see our Rails application in action is to create the database, just like we would if we were running a Rails app without Docker. $ docker-compose run web rails db:create $ docker-compose run web rails db:migrate. The docker-compose run command is what we use to run commands inside a container. Running docker. For the Docker bits, everything included is an accumulation of Docker best practices based on building and deploying dozens of assorted Dockerized web apps since late 2014. This app is using Rails 6.1.0 and Ruby 2.7.2. The screenshot doesn't get updated every time I bump the versions

Simple Rails 6.1 application to demonstrate using Docker for production deployment. The application is a very simple kind of CMS (content management system) allowing to manage posts. Beside the boring CRUD functionality it has some non-default features. This project aims to build a lean Docker image. 9 Critical Decisions for Running Docker in Production James Higginbotham 30 March 2016 Updated: 07 January 2021 . You've got your Rails or Rack-based Ruby app built. It's even running in Docker off your laptop and other developers on your team have it up-and-running as well There are a few rules of thumb to keep image size small: Start with an appropriate base image. For instance, if you need a JDK, consider basing your image on the official openjdk image, rather than starting with a generic ubuntu image and installing openjdk as part of the Dockerfile Speed Up Your Development Flow With These Dockerfile Best Practices. The Dockerfile is the starting point for creating a Docker image. The file format provides a well-defined set of directives that allow you to copy files or folders, run commands, set environment variables, and do other tasks required to create a container image

Ruby on Rails: Running Tests with Guard and Docker. Guard is a great tool for quickly running your Rails app tests/specs as your develop the code. As you edit and change the files in your app, Guard can trigger tests specific to the files you are modifying default: &default adapter: sqlite3 pool: <%= ENV.fetch(RAILS_MAX_THREADS) { 5 } %> timeout: 5000 We need to change these to reflect the fact that we will use the postgresql adapter, since we will be creating a PostgreSQL service with Docker Compose to persist our application data.. Delete the code that sets SQLite as the adapter and replace it with the following settings, which will set the. Let's start off with a few patterns, tips and best practices around using Docker Compose in both development and production. Dropping the version property at the top of the file The Docker Compose spec mentions that the version property is deprecated and it's only being defined in the spec for backwards compatibility The resulting Docker image generated by the Dockerfile above will be 1.05 GiB large. Let's pause for a moment: One Gigabyte for a simple Rails application? That sounds quite impressive. So let's see if and how we can bring this number down. Switching to Alpine Linux. The standard Ruby Docker image is based on Debian You are ready to build a Docker image bundling your Ruby on Rails application. Since then, we have published 324 articles: small tips and tricks, best practices, and service reviews. We enjoy writing about all things AWS a lot. Our weekly newsletter provides you with the latest information about AWS. Deepen your knowledge bit by bit

This document covers recommended best practices and methods for building efficient images. Docker builds images automatically by reading the instructions from a Dockerfile -- a text file that contains all commands, in order, needed to build a given image Docker Bench for Security is a tool created by the Docker team that runs through a checklist of security best practices to adhere to on a Docker host and flags any issues it finds. For more details see the GitHub repository. Don't Store Sensitive Data Inside a Container Image Discover the collection of best practices for end-to-end browser testing of Ruby on Rails applications and adopt them in your projects. See how to ditch Java-based Selenium in favor of leaner, meaner Ferrum-Cuprite combo that uses Chrome DevTools Protocol directly through pure Ruby

The importance of logging is the same across all technology stacks and types of software, and Ruby and Ruby on Rails are no exception to this rule. So today, we'll share a list of Ruby on Rails logging best practices for beginners. Some of the tips will be specific to Rails, and others will be completely platform agnostic Updated on June 19th, 2018 in #docker . Best Practices When It Comes to Writing Docker Related Files Here's a few patterns and little things I've picked up after using Docker since 2014. These help maintain Docker driven apps. Rails uses 3000, Flask uses 5000, Phoenix uses 4000 and most Express apps use 3000 Top Dockerfile best practices ‍ Docker is a miracle of modern engineering. It's amazingly easy to get started with and simple to extend. However, perhaps precisely because of that simplicity, many of its best practices are often forgotten or overlooked. To help you take advantage of them, we've put together this guide Efficiency is critical, and this blog series will cover five areas for Dockerfile best practices to help you write better Dockerfiles: incremental build time, image size, maintainability, security and repeatability. If you're just beginning with Docker, this first blog post is for you! The next posts in the series will be more advanced

How to dockerize a Rails application by Viral Patel

Dockerizing a Ruby on Rails Application - Semaphore Tutoria

Using Docker for Rails in a Production Environmen

  1. Configuring the container to use an unprivileged user is the best way to prevent privilege escalation attacks. This can be accomplished in three different ways as follows: During runtime using -u option of docker run command e.g.: docker run -u 4000 alpine. During build time. Simple add user in Dockerfile and use it
  2. If you're building a Docker image, it's natural to go read Docker's official documentation's best practices for Dockerfiles on docs.docker.com. While this document has a lot of excellent and useful information, it also has some problems: important security and performance details that are left as an exercise to the reader, as well as contradictory advice
  3. Docker tagging is an exceptionally powerful tool for us when it comes to managing our images. It helps in managing different versions of a docker image. Below is an example of building a docker image with tag name v1.0.1. docker build -t geekflare/ubuntu:v1..1. Now, there are two types of tags used: Stable tags Unique tags

Wrangling Complex Rails apps with Docker Part 1 : The

How to Dockerize a Rails application (hello world

However, like any other infrastructure, Docker is prone to a number of security issues, including kernel exploits, container breakouts, poisoned images, and denial-of-service attacks. Developers can address these pitfalls and safeguard their containerized environments by following a distinct set of best practices for Docker security Docker Container Security 101: Risks and 33 Best Practices. Containers, along with orchestrators such as Kubernetes, have ushered in a new era of application development methodology, enabling microservices architectures as well as continuous development and delivery. Docker is by far the most dominant container runtime engine, with a 91%. Here's a bunch of Docker best practices that I picked up after having used Docker for the last ~4 years. They are all based around Docker related files (Dockerfile, docker-compose.yml and .dockerignore): It's been solid for me when developing large Rails, Flask and Phoenix apps The Best Docker online courses and tutorials for beginner to learn Go Programming in 2021. Docker software is on the bleeding edge of technology today. It is also one of the most compelling technologies of the last decade in terms of its disruption to software development, operations, systems architecture, testing and compliance practices. Docker is becoming a must tool for developers.

First Ruby on Rails app in Docker Image. Hi there. I'm a newb just graduated in Feb from coding bootcamp. During my course we used Vagrant/Virtualbox combo to build Rails apps while learning. I tried making my own vagrantfile and long story short things got messed up, I hate Vagrant now, and I want to try Docker. It seems so easy Best practices of working with Docker software in the field. You will Dockerize a Flask or Ruby on Rails application and pick up a few best practices on how to create a production-ready application with those frameworks. how to create a staging server so you can test your app See Docker Tagging: Best practices for tagging and versioning docker images for more [] Like Like. 3. Joan on November 15, 2020 at 5:29 pm . Reply. And what about removing old images, you need to not delete the ones that are production, never, probably, how do you manage it with your proposal I've been using Docker for some time now. There is already a lot of documentation available online but I recently saw the same anti-patterns several times, so I thought it was worth writing a post about it. I won't repeat all the Best practices for writing Dockerfiles here. You should definitively read that page

GitHub - nickjj/docker-rails-example: A production ready

Best Practices For Managing Docker Containers Managing Docker Container Efficiency With Proper Planning. When mapping out your software process, it's best to plan out the container system to ensure you fulfill the tasks with the least amount of work and resources In this blog-post, I'll share five (5) tips, tricks, and best practices for using Docker. Let's start with a short analogy for everything that will be covered. Analogy. The Dockerfile is a recipe for creating Docker images. Hence it should be treated as if it's the recipe for your favorite cake . It should be concise, readable, and easy to. Best practices for speeding up builds. Table of contents. Building leaner containers. Using Kaniko cache. Using a cached Docker image. Caching directories with Google Cloud Storage. Using custom virtual machine sizes. Avoiding the upload of unnecessary files 10 Docker image security best practices; Docker for Java Developers: 5 things you need to know not to fail your security; Secure your Java container images . Sign up for free . Join us at SnykCon 2021. We're bringing development and security together in our free, 3-day virtual event focused on helping teams build securely. Register now. 10 Tips for Docker Compose Hosting in Production Khash Sajadi 06 June 2017 Updated: 05 November 2020 . Overview. We all love Docker for how it simplifies the development workflow. With Docker, it is possible to run different components of an application inside different containers and run all of them on a development laptop

The last Dockerfile is thus the recommended Dockerfile, while all intermediate ones are there only to illustrate specific best practices. Incremental build time. In a development cycle, when building a Docker image, making code changes, then rebuilding, it is important to leverage caching How To Lock Docker Container. By Tiara Maulid July 25, 2021. Today i learned how to create rails how to secure docker containers containers container anatomy images what is a docker container for ners dockercon 2018 sf choice agility. Github Safe Waters Docker Lock Automatically Manage Image Digests In Dockers Pose S And Kuberes Manifests By.

GitHub - ledermann/docker-rails: Dockerize Rails 6 with

  1. Best practices for writing Dockerfiles. Docker can build images automatically by reading the instructions from a Dockerfile, a text file that contains all the commands, in order, needed to build a given image. Dockerfile s adhere to a specific format and use a specific set of instructions. You can learn the basics on the Dockerfile Reference page
  2. With the success of Docker, containers are now right in the public eye. Logging is a hot topic in the Docker community because containerization changes the nature of logging. However, few established best practices have emerged. As with any service, logging is a core component of Docker
  3. Best practices with Docker, Redis, and Express for dev configuration. I am working on a small project that was started by someone else. They set it up with Docker & docker-compose, so that the frontend and the backend run together (along with Redis). However, they don't seem to have a convenient development setup
  4. 1) create a VM, set it up with docker compose to auto start -- have it reference code on a network drive. 2) take a an image of 1) 3) create a load balancer, balancing that image. GCP load balancers/instance groups even a way to rollout images. That is %80 of k8s right there (endpoint, scaling, containers, rollouts)
  5. Patterns & Best Practices English — 日本語に切り替える These articles describe patterns for building robust systems on Heroku. Heroku Enterprise customers can request in-depth guidance on these topics from the Customer Solutions Architecture team
  6. Docker Bench Security. Another tool that I've recently been using is Docker Bench Security, which: Checks for dozens of common best practices around deploying Docker containers in production. The tool was based on the recommendations in the CIS Docker 1.13 Benchmark, and run checks against the following six areas

9 Critical Decisions for Running Docker in Productio

docker run --log-driver fluentd httpd. You can also change the default driver by modifying Docker's daemon.json file. The code snippet below shows the JSON to add if you want to use fluentd as your default logging driver. We use the log-opts item to pass the address of the fluentd host to the driver: daemon.json INFO] 1 - Host Configuration [WARN] 1.1 - Create a separate partition for containers [PASS] 1.2 - Use an updated Linux Kernel [PASS] 1.5 - Remove all non-essential services from the host - Network [WARN] 1.6 - Keep Docker up to date [WARN] * Using 1.10.1, when 1.10.2 is current as of 2016-02-22 docker/docker-bench-security

This slide deck describes some of the best practices found when running Oracle Database inside a Docker container. Those best practices are general observations collected over time and may not reflect your actual environment or current situation Best practices for writing Dockerfiles Estimated reading time: 21 minutes Docker can build images automatically by reading the instructions from a Dockerfile, a text file that contains all the commands, in order, needed to build a given image.Dockerfiles adhere to a specific format and use a specific set of instructions.You can learn the basics on the Dockerfile Reference page Finally, on line 8, we pass Docker a command and argument to run the Node.js app inside the container. The above example provides a basic, but ultimately problematic, Dockerfile. In the next section we will look at some Dockerfile best practices for running Node.js in production. Dockerfile Best Practices Don't Run the Application as roo Exception Perceptions: 4 Best Practices for Using Docker Compose. On this episode of Exception Perceptions, Bret Fisher, Docker Captain and creator of the popular Docker Mastery series on Udemy, helps us master Docker Compose. Watch the episode, and read more of Bret's suggested best practices. Then go and get all of his Docker resources

Note: Outside the very specific topic under discussion, the Dockerfiles in this article are not examples of best practices, since the added complexity would obscure the main point of the article. To ensure you're following all the best practices you need to have a secure, correct, fast Dockerfiles, check out the Python on Docker Production Handbook As I was working on speeding up our Rails apps deployment pipelines, I made a tour of the existing Docker configurations. Most of them roughly look like: (1)(2)(3) 1- copy Gem related files an First, let's make an empty directory called rails-dockerized. mkdir rails-dockerized. cd into the directory. cd rails-dockerized. The first file we want to make is the Gemfile, this is because we will have docker instantiate the entire dev environment instead of running rails commands directly through our host operating system. touch Gemfil Docker containers for Rails development environments, part 1: Introduction. By Aaron Sumner, February 14, 2021. File under: docker, legacy . We need to talk about using Docker and containers as Rails development environments. Yes, they are super-convenient for setting up an environment in minutes-not hours, or days The left-hand side of the COPY statement is relative to the build: { context: } directory, but can't go above that directory; if you COPY Gemfile Gemfile.lock . with the context: set to the main_app directory it should have the effect you want. - David Maze 2 days ag

In this case, the output child images which contain Ruby on Rails, Apache, and the application code which the source-to-image process was pointed towards during the build phase. The following sections discuss best practices to keeping those attributes similar or the same. 3.5.1. Time upstream docker has a nice description of best. He does this by having two docker-compose.yml files which makes sense, one for each location and the production one changes the RAILS_ENV var as expected. At the end of the video he states that, it's not the most ideal way to deploy a Rails app as there is a lot of other things that need to be done Docker Best Practices.md Mistakes to Avoid: Docker Antipatterns. Whichever route you take to implementing containers, you'll want to steer clear of common pitfalls that can undermine the efficiency of your Docker stack. Don't run too many processes inside a single container. The beauty of containers—and an advantage of containers over. The Docker best practices documentation also used to say that if a package contained in the parent image is out-of-date, contact its maintainers. It would indeed be nice if base images always had security updates. But let's see what real world base images are like. Here's our Docker file, using the official ubuntu image as its base image If you don't have a docker-compose.yml then be sure to visit the previous tutorial in this series, Containerizing a Ruby on Rails Application for Development with Docker Compose, and paste the contents from the linked section into a new docker-compose.yml file. Open the file with nano or your favorite editor: nano docker-compose.ym

Docker development best practices Docker Documentatio

The best Ruby on Rails tips or tricks includes following best practices defined by the framework and community of seasoned developers who've learned the best, most efficient ways to write code. Fortunately, the Ruby on Rails community is known for being amazing - part of the reason why Ruby developers love it as much as they do Although Docker's simplicity helps to get the job done, optimizing it comes with experience and usually takes time. Since I have been working with Docker for a long time, I decided to share some of my experience with you on best practices to develop better Containers from Day 1. 1. Identify Cacheable Units

Speed Up Your Development Flow With These Dockerfile Best

  1. In this tutorial, we'll explore Ruby best practices to ensure our code is in line with Matz's principles of being legible, modular, and concise. 1. Use case/when conditionals instead of lengthy if statements. Let's say we are writing a program to ask for a student's major and answer with an appropriate response
  2. The official Docker best practices page is highly technical and focuses more on the structure of the Dockerfile instead of generic information on how to use containers in general. Every Docker newcomer will at some point understand the usage of Docker layers, how they are cached, and how to create small Docker images
  3. g language. According to its authors, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, and Lisp. It supports multiple program
  4. Docker Security Best Practices. Security is critical to production deployments of containerized applications. Here are several security best practices to consider for your Docker deployments: Create Docker runtime security policies—create a policy that defines the appropriate response during runtime. Once a security event occurs, the team and.
  5. Docker ENTRYPOINT & CMD: Docker file best practices. When creating Dockerfiles the commands CMD and ENTRYPOINT enable you to specify a startup command for an image. Any image that does not have a startup command will fail to run. Although Docker ENTRYPOINT & CMD enable you to specify a startup command there are some differences between the two
  6. Collection of some of our docker-specific best practices. Inheritance. Inheritance is when you use FROM some-image:1.2.3 (vs FROM scratch) in a Dockerfile. We recommend to leverage lean base images (E.g. alpine or busybox). Try to leverage the same base image in as many of your images as possible for faster docker pulls

2 Best Practices for Deploying Oracle RAC on Docker DISCLAIMER The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon i In this article, I will discuss five Docker security best practices to consider as you begin your journey to adopt container infrastructure. 1. Docker Host, Application Runtime, and Code-Level Security: Take a Holistic Approach. Docker security starts with the host, as containers share the operating system kernel

Ruby on Rails: Running Tests with Guard and Docker Chris

A developer gives a quick tutorial on how to conduct logging in a Ruby on Rails-based application, and then considers some best practices for logging in Rails Docker and container security are broad problem spaces and there are many low hanging fruits one can harvest to mitigate risks. A good starting point is to follow some best practices when writing Dockerfiles. I've compiled a list of common docker security issues and how to avoid them Best practices writing a Dockerfile. Since Bitnami published its first Docker container in 2015, the techniques for writing Dockerfiles have significantly evolved. As part of the team which maintains a container catalog with more than 130 apps, I have worked on adapting the containers and their Dockerfiles to meet the community requirements Next, you'll learn the Docker basics and we'll complete a hello world example. You'll Dockerize a Flask or Ruby on Rails application and pickup a few best practices on how to create a production ready application with those frameworks. You'll learn how to create a staging server so you can test your app

Here, we will learn Docker best practices like Docker security best practices, etc. Docker is a very handy tool that allows us to create multiple virtual environments that make software development and deployment very easy. However, when using Docker, there is a learning curve, and it takes time to understand all of the tricks, tips, and a set of best practices that everyone follows Container Security Best Practices. When containerization is implemented with good security practices, containers can offer better application security rather than a VM only solution. This page gathers resources about basic tips, Docker security best practices and Kubernetes security best practices. Table of Contents: 1

Terraform With Docker. This is a documentation on how to use Terraform with Docker to provision cloud resources, mainly using AWS as the provider. It contains tips on certain practices that I personally deem best practices fo various reasons. The Terraform image comes with the entrypoint command terraform, so we will append the commands init. In this blog I will show some best practices for instrumenting Docker containers, using docker-compose with a few popular AppDynamics application agent types. The goal here is to avoid rebuilding your application containers in the event of an agent upgrade, or having to hard-code AppDynamics configuration into your container images This rails testing handbook shares our experience in getting Semaphore to web scale without ever losing control of the codebase. The best part? These techniques will work both in new projects and large Ruby on Rails applications

Although Docker is a safer option than working on the host machine directly, many potential security issues may arise while working with containers. This article includes ten container security best practices that can help you prevent attacks and security breaches Previously, in our Docker Security Best Practices series, we took a deeper look into Docker Image security, and what best practices to follow. This post will continue the series, focusing on Docker container runtime, the challenges that come with securing them, and what countermeasures can be taken to achieve a better container runtime security stance Best practices for building docker images with GitLab CI Using a generic .gitlab-ci.yml file that you can drop in March 4, 2019. At CALLR, we have been using GitLab for quite a while. We are also using more and more Docker containers. In this post, I'll show you how we build docker images with a simple .gitlab-ci.yml file. Let's not waste. A step-by-step guide to install Docker on your favorite OS. Docker is an open-source project that supports building, testing, deploying, and managing applications in self-sufficient, portable containers. Generally, the container images have all the resources that an application requires to run Docker Best Practices. To establish best practices for your organization, the nonprofit Center for Internet Security (CIS) provides a detailed 100+ page Benchmark resource for safe and secure Docker configuration, and there are a few specific areas of focus to keep in mind. Be aware of what images you're using

3. Keep Your Images Lean and Clean. The larger the image, the larger the attack surface of your Docker containers. In the case of a fully fledged VM, you have no choice but to use an entire operating system. But with Docker workloads, your containers only have to provide the resources your application needs You use the docker commit command to create an image from a modified container. It is a best practice to use the -a flag that signs the image with an author string. You should also always use the -m flag, which sets a commit message. Create and sign a new image that we'll name, ubuntu-git from the image-dev container where you. This command registers a new runner to use the docker:19.03.12 image. To start the build and service containers, it uses the privileged mode. If you want to use Docker-in-Docker, you must always use privileged = true in your Docker containers.; This command mounts /certs/client for the service and build container, which is needed for the Docker client to use the certificates in that directory The Best practice. An example of Docker instructions following best practices. FROM ubuntu:14.04 # Update system and setup SSH Server RUN apt update -y && apt install -y openssh-server \ && mkdir /var/run/sshd # Start SSH server CMD /usr/sbin/sshd -D. Refer the below output regarding the above example Dockerfile After that, we provide some best practices when dealing with Docker containers. Maturity level Container management is a fairly new technology, which leaves many professionals with a knowledge gap in this area. Additionally, not many people are capable (yet) of making a proper security assessment. For example, auditors might not be able to ask.

Containerizing a Rails Application for Development with

Previously, in our Docker Security Best Practices series, we took a deeper look into Securing the Docker Host, and what best practices to follow.This post will continue the series, focusing on Docker images, the challenges that come with securing these artifacts, and what countermeasures can be taken to achieve a better container image security stance Docker container security best practices. That said, challenges still remain, unique challenges, and plenty of them. That's because, unlike a virtual environment that is strictly abstracted from the host system, privilege escalation is a serious issue when using containers. You absolutely need to follow security procedures to prevent that Docker containers are generally faster and less resource-intensive than virtual machines, but full VMware virtualization still has its unique core benefits—namely, security and isolation. Since virtual machines enable true hardware-level isolation, the chance for interference and/or exploitation less likely than with Docker containers Best practices. Below are some guidelines you should follow when you use and administer GitLab Runner. Build Directory. GitLab Runner clones the repository to a path that exists under a base path better known as the Builds Directory. The default location of this base directory depends on the executor. For

( 40% off ) Scaling Docker on AWS Udemy CouponBest Practices for Client-Side Logging and Error Handling

HELM Best practices. A high-level overview of Helm workflows. Helm is a package manager for Kubernetes (think apt or yum). It works by combining several manifests into a single package that is called a chart.Helm also supports chart storage in remote or local Helm repositories that function like package registries such as Maven Central, Ruby Gems, npm registry, etc Docker patterns/anti-patterns. Raw. Dockerfile. ### Generic Dockerfile demonstrating good practices. ### Imports. # Bad-ish, we do not need Ubuntu for this, nor do we want latest if we are using in a build system, predictable is better If not, open a command prompt or bash window, and run the command: cli. docker run -d -p 80:80 docker/getting-started. You'll notice a few flags being used. Here's some more info on them: -d - run the container in detached mode (in the background) -p 80:80 - map port 80 of the host to port 80 in the container. docker/getting-started - the image.

Best Practices Around Production Ready Web Apps with

  1. Logging is an important data source for troubleshooting issues, business intelligence, and meeting compliance. Logs give records of precisely what your application is doing when. You can log from anywhere in your app's code with an output statement. Heroku also aggregates logs from other components of the platform
  2. Optimize Docker images for Ruby on Rails applications
  3. Dockerizing Ruby on Rails cloudonau

Best practices for writing Dockerfiles Docker Documentatio

  1. Docker Best Practices and Anti-Patterns by Timothy
  2. System of a test: Proper browser testing in Ruby on Rails
  3. Ruby on Rails Logging Best Practices Loggl
  4. Best Practices When It Comes to Writing Docker Related
  5. Top Docker Best Practices to Improve Dockerfiles - Datree
  6. Intro Guide to Dockerfile Best Practices - Docker Blo
  7. Why We Love Docker and Best Practices for DevOps Hacker Noo
How to Reverse a Binary Tree in Python – Full-Stack FeedNodeOS: Disgrace Upon the JavaScript Community – FullHow to use SecretHub on GKE - Documentation - SecretHub