Software Development

Multi-stage Docker image builds, minimizing final image size, supporting multi-architecture containers

(Sun Oct 20 2024 00:00:00 GMT+0300 (Eastern European Summer Time)) Docker supports creating images/containers for (almost) every CPU architecture. But, the image build workflow differs based on the architecture. We discuss one way to handle building Docker images across platforms while minimizing the resulting image size.

Implementing OAuth2 Client Credentials Flow using self-hosted Ory tools

(Fri Sep 20 2024 00:00:00 GMT+0300 (Eastern European Summer Time)) Client Credential Flow is a widely used best practice to authorize software to access APIs of other services. Another best practice is to not DIY implement cybersecurity but to rely on mature well-tested existing tools. Ory, and its open source Hydra component, can easily be used to any OAuth2 scenario, including Client Credential Flow.

Hosting Drupal 7 with PHP 8.2 and MySQL 8.2 using Docker

(Thu Jul 25 2024 00:00:00 GMT+0300 (Eastern European Summer Time)) Drupal 7 is an old release, which due to go end-of-life in January 2025, and which many of us are still using in production. I had set up Docker containers running PHP 7.1 and MySQL 5.7, back when those versions were what's required to host Drupal 7 sites. Since those PHP and MySQL versions are old, the Drupal team has since updated Drupal 7 to run on PHP 8.2 and MySQL 8. Before Drupal 7 goes end-of-life, I want to build a modern stack for hosting the old Drupal release required by my site.

Inspecting a Docker container filesystem without starting a container

(Sat Jul 20 2024 00:00:00 GMT+0300 (Eastern European Summer Time)) Docker images contain instructions for building a filesystem one layer at a time. Sometimes we need to explore the layers to ensure the image is built correctly. Since it's non-obvious how to do that, let's explore several tools.

Installing Dockge, a lightweight Docker management tool

(Mon Jan 15 2024 00:00:00 GMT+0200 (Eastern European Standard Time)) Managing Docker infrastructure solely with command-line tools is powerful but full of geeky details which can be simplified with a GUI. Dockge is a web GUI offering a point-and-click approach to managing application stacks deployed with Docker Compose.

Installing Docker Engine or Desktop on Ubuntu, macOS or Windows

(Tue Jan 02 2024 00:00:00 GMT+0200 (Eastern European Standard Time)) Docker is a system for deploying containerized software on laptops, single board computers, server farms, or massive compute systems. It gives you a Linux environment in which to install software, that is packaged in a portable format, for execution on any system that can run Open Container Initiative (OCI) containers. It is easy to setup Docker on Linux hosts, and only slightly harder on Mac or Windows systems.

How to install NextCloud using Docker Compose: a comprehensive guide

(Wed Dec 13 2023 00:00:00 GMT+0200 (Eastern European Standard Time)) NextCloud is open source software implementing the equivalent to Google Drive, Dropbox, and the like. Beyond file sharing, it supports document editing, calendars, email, and is attempting to compete with the full breadth of Google Workspace services. It can be self-hosted on your own server, giving you privacy you don't get from commercial cloud services.

How to get the maximum value of a field in MongoDB

(Thu Oct 26 2023 00:00:00 GMT+0300 (Eastern European Summer Time)) The task of generating a sequence of integers, such as identifiers for documents in a MongoDB collection, is conceptually. But, like many seemingly simple coding tasks, it's easy to end up confronting an obtuse error message like "RangeError: Maximum call stack size exceeded".

Using Podman to run MongoDB on MacOS mounting data directory from MacOS host

(Fri Oct 06 2023 00:00:00 GMT+0300 (Eastern European Summer Time)) Podman, the Docker alternative for running Docker containers, runs great on MacOS. But, some scenarios can be tricky, such as mounting macOS host directories into a container.

Authenticating and encrypting MQTT to Mosquitto with SSL

(Sun Oct 23 2022 00:00:00 GMT+0300 (Eastern European Summer Time)) A huge part of modern Internet security is SSL/TLS, which encrypts data and authenticates connections. This is the technology behind HTTPS, and can be used to securely run MQTT on the Internet.

Deploying Mosquitto MQTT broker on Linux using Docker

(Thu Oct 13 2022 00:00:00 GMT+0300 (Eastern European Summer Time)) Getting started with Mosquitto is deceptively easy. We show you how to avoid the pitfalls.

Self-hosted metasearch engine protects against tracking from Google, Bing, etc

(Wed Jul 13 2022 00:00:00 GMT+0300 (Eastern European Summer Time)) Are you worried that Google/Bing/etc know too many details about you? These companies collect data about us, to then sell advertising targeting us. This can be avoided using search tools that protect privacy. One, SearXNG, is an open source metasearch engine that guarantees complete anonymity.

Self-hosted DMARC report viewer to aid your anti-SPAM effort

(Tue Jul 12 2022 00:00:00 GMT+0300 (Eastern European Summer Time)) DMARC is an important tool for websites that send e-mails to do so legitimately. Implementation requires catching e-mails containing DMARC reports then using a tool to parse/summarize/report on their content. We look at a simple DMARC reporting tool that is easily deployable using Docker.

Building Node.js REST API servers from OpenAPI specifications

(Tue May 24 2022 00:00:00 GMT+0300 (Eastern European Summer Time)) OpenAPI specifications are meant to assist creating either server or client API implementations. In this article we will explore quickly implementing server code from an OpenAPI spec, running on Node.js, preferably using TypeScript.

Easily edit or view OpenAPI 3 API specifications using free tools

(Fri May 20 2022 00:00:00 GMT+0300 (Eastern European Summer Time)) OpenAPI documents are written in either YAML or JSON and are editable with any programmer's editor. Tools like the Swagger Editor interactively assist with writing OpenAPI specifications by immediately showing errors and interactive API documentation. Since OpenAPI is an open specification, the door is open for any company to develop OpenAPI tools. In this post, we'll go over using the Swagger Editor on the swagger.io website and try some alternatives that will run on your laptop.

Displaying Swagger UI in an HTML page without using server-side services

(Thu May 19 2022 00:00:00 GMT+0300 (Eastern European Summer Time)) Among the Swagger Tools is Swagger UI, an excellent tool for browsing an OpenAPI specification, the methods it defineds, and the data models it defines. Swagger UI turns the YAML or JSON specification file into an interactive browsing of the API. In this article we'll go over deploying the Swagger UI documentation viewer in a regular web page.

Self-hosting services using Docker

(Thu May 12 2022 00:00:00 GMT+0300 (Eastern European Summer Time)) Self-hosting is the opposite of using a 3rd party cloud service like Dropbox or Google Drive, and instead to host an equivalent service, like Nextcloud, on their own hardware. For every popular cloud service there is probably an independently developed open source equivalent one can host on their own hardware. Self-hosting gives one control, and peace of mind that their private information is not being sold to others, and it can save a lot of money from service fees that aren't paid. The personal security implications are huge, since it is known that governments around the world are pressuring internet services for data on user activity. While there is a legitimate need to know about criminal activities, do we really need to risk our data being snooped upon?

Why self-host web services for more control and lower cost than cloud-based web services

(Fri Dec 17 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) Self-hosting is about hosting Internet services on your computers, controlled by you. This is different from just Using the Cloud by signing up for services like Dropbox, Github, Travis, or other 3rd party controlled services. Instead of taking the easy path, just using cloud services, self-hosters have control over their data, and enjoy lower costs. For most commercial services there are equivalent open source alternatives you can host on your own hardware.

An iframe from googlesyndication.com tries to access the Camera and Microphone

(Tue Dec 14 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) The last thing we want is for an advertising network to access the Camera or Microphone on our computer. But, while looking for something else, I stumbled upon messages in the Safari JavaScript console saying that an iframe loaded from safeframe.googlesyndication.com tried to do exactly that.

How and why to use Git Submodules

(Fri Dec 10 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) Sometimes we need to use the contents of one Git repository inside another. A typical example is using the source for a shared library in multiple applications. With Git Submodules, we configure one or more other repositories to check out as child repositories.

Replacing Docker Desktop with Multipass, to avoid Docker Desktop fees

(Sat Oct 30 2021 00:00:00 GMT+0300 (Eastern European Summer Time)) Docker is open source software, and Docker Desktop is a spiffy GUI application to simplify installing Docker on a macOS or Windows machine. It's worth using, because of how easy it makes to use Docker. However, Docker Inc has changed to a freemium model for the Docker Desktop application, which will lead some to avoid using Docker Desktop and instead seek an alternative to avoid paying the fee. What we'll discuss is using Multipass, or other virtual machine, to avoid those fees.

Docker Inc squeezing money from Docker Desktop and other Docker tools

(Sat Oct 30 2021 00:00:00 GMT+0300 (Eastern European Summer Time)) From its launch, Docker Desktop was a free product letting us easily install Docker on macOS and Windows machines. Docker doesn't run natively on either, and previously required serious hackery to get Docker running. But, the company behind Docker recently announced changes including describing Docker Desktop as being available for individual developers, education, open source, and small businesses. That's led to some outcry, and calls to abandon using Docker.

Self-hosted Docker infrastructure in home or office using low-cost computers like Intel NUC

(Fri Mar 26 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) Using Docker, and a simple small computer, you can build a powerful computing "cloud" in your home, on your desktop, at low cost, giving you control over your data. If you need more power, adding another computer or three to the mix quickly adds more capabilities. For almost any popular 3rd party service like Github, Dropbox, and Trello, there is an open source package that might even be better. With open source operating systems, open source packages like Gitea, Nextcloud, and Kanboard, you gain control over your destiny.

Scheduling background tasks using cron in a Docker container

(Thu Mar 25 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) The cron service has, for time immemorial in Unix-like systems, long helped us schedule the occasional background process that keeps our systems ticking. Typically it is used to gather up or summarize log files, or collect and process data from external systems. In the old days when e-mail exchange, and the all-too-important Usenet news exchange, happened using UUCP over modem lines, a cron job scheduled regular UUCP calls to neighboring servers. Having cron running in the background is part of normal Unix/Linux/etc system admin practices. Even though the crontab format is kind of hokey, we all learn it and set up automated background tasks to keep the world functioning. Let's see how to set this up in a Docker container.

Using multiple databases and PHPMyAdmin in a single MySQL Docker instance

(Sat Mar 20 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) Sometimes our applications need multiple database, but with a single database server instance. The typical recommendation is for each Docker container to serve a single application. For databases, that means one database server for each application. That's the result of following a theoretical best practice, but isn't there another best practice to avoid excess processes and overhead? MySQL, like most other database servers, can support multiple databases, multiple user identities, and has an extensive system for controlling access on IP address, user names, and passwords. The MySQL container for Docker is easy to use, but supports only a single database instance per server container. In this article let's learn how to go ahead and configure the MySQL container for Docker to support multiple databases each with their own user ID.

Connect with SSL to MySQL in Docker container

(Wed Mar 17 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) MySQL might throw an error when an application connects without using SSL to encrypt the connection. Therefore the MySQL team clearly hints it is best to use SSL connections to MySQL servers. Clearly a database connection has critical data that you don't want to leak to 3rd parties, and encryption is a great counter-measure. The official MySQL Docker container automatically generates a set of SSL certificates to use for connections, so let's see how to put those certificates to use.

Using SSH to remotely control a Docker Engine or Docker Swarm in two easy steps

(Mon Mar 15 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) To remotely manage a Docker instance, we can SSH into that host to run Docker commands there. But a not-well-documented Docker feature lets us remotely access, and manage, Docker instances from the comfort of our laptop, via SSH. It's fast, easy and very powerful.

Understanding MySQL the Access Denied error in or outside a Docker container

(Wed Mar 10 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) I once wasted more than a full workday fighting the MySQL error message Access denied for user (using password: YES). After finding the solution I want to help others avoid this problem. Along the way to fixing the issue, I learned a lot about how MySQL authenticates user ID's. I've been using MySQL for years and had glossed over this topic, but it turns out to both not be terribly difficult, and very crucial to the solution.

Running MongoDB with Docker and Docker Compose

(Wed Mar 10 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) MongoDB, as one of the popular NoSQL databases, is part of many software projects. Hence, one must sometimes know how to configure and setup MongoDB in a Docker environment.

Set up MySQL using Docker on your laptop

(Wed Mar 10 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) Setting up MySQL on Docker is fairly simple, and the MySQL team has created a flexible Docker image that can be used in many ways. Databases, like MySQL, serve as the data persistence and retrieval layer of many applications we might deploy.

Wordpress local development environment with Docker and Docker Compose on your laptop

(Tue Mar 09 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) We normally install Wordpress on a public Internet server, and installation on your local machine is normally limited to developing or testing a Wordpress feature or theme. The development loop is a lot shorter when you can directly edit Wordpress files on your machine, as opposed to working out a method to edit remote files. While it's convenient, it's not always clear how to create a website hosting environment on your laptop. In the past we would use MAMP (or the Windows equivalent), which is a macOS-native environment for running Apache/MySQL/PHP stacks. But today we have a different tool, Docker, that is easily able to run that stack, as well as any other stack. Docker easily runs on a laptop, so let's take a look at using it to run a local Wordpress development environment.

Deploying MySQL to get started using a Docker Compose file

(Mon Mar 08 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) While the docker run CLI command is powerful, Docker Compose files let us succinctly describe a whole system of Docker containers, virtual networks, and file systems, in one easy to read file. This is a powerful tool with which you can easily describe deployment of a full application stack. Compose files support not only deployment to the local Docker host, but to Docker Swarm clusters, and now to AWS ECS and Azure ACI cloud platforms.

Set up PHPMyAdmin and Wordpress Docker containers using existing MySQL

(Fri Mar 05 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) There are several ways to launch a PHP service, backed by a MySQL database, on Docker. That combination is literally the LAMP Stack (Linux, Apache, MySQL, PHP/Python/etc), and we can use Docker to easily set up this combination on our laptop or deploy it to a production server. Elsewhere we went over setting up MySQL on Docker, so lets now demonstrate the LAMP Stack, on Docker, by deploying PHPMyAdmin and Wordpress on our laptop.

Familiarizing ourselves with Docker

(Thu Mar 04 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) Getting to know Docker by running a few commands.

Implementing HTTPS with Docker services on AWS ECS using Docker Compose

(Fri Feb 05 2021 00:00:00 GMT+0200 (Eastern European Standard Time)) Thanks to a new Docker CLI feature we can directly deploy to AWS Elastic Container Service (ECS) using a Docker Compose file. It's very cool, and greatly simplifies deploying applications to AWS, but it lacks an important feature which is implementing HTTPS support. The solution offered by the Docker team involves rewriting the Cloud Formation template they generate for us, so let's learn how it works.

Wordpress production deployment with Docker Compose

(Fri Sep 25 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) Hosting a Wordpress site in Docker is relatively easy, and is largely a matter of properly configuring three standard containers. It requires a MySQL database, NGINX, and the Wordpress PHP-FPM container, with simple configuration. Starting from a freshly provisioned virtual server, the process takes less than two hours to set up hosting with HTTPS support.

How to share a Docker network between Stacks deployed to a Docker Swarm

(Sun Sep 20 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) How do you handle a system deployed to Docker Swarm, with multiple Stacks, where a container in one Stack must communicate with a container in another Stack? For example, you may have a database Stack, and an application layer Stack, where the application needs to communicate with the database. It's simplest to put both into the same Stack. But it's a best practice for the database to stay running, and to separately bring the application up and down to deploy updates. Therefore it's best to use separate Stacks for each layer, raising the question of how will the application containers find the database containers.

Configuring Terraform to use for deploying AWS Infrastructure

(Thu Aug 13 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) Terraform is a powerful tool for configuring infrastructure on a long list of cloud-based systems. Since AWS is such a complex system we look for simpler ways to do anything on AWS. Get started means installing and configuring the AWS CLI before using Terraform to simplify AWS deployment.

Fixing could not read Username for 'https://github.com': No such device or address in Jenkins

(Wed Aug 12 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) You might have a successfully executing build task in Jenkins, then suddenly need that build task to push to a Github repository. For example, it might render a statically generated website to push to the gh-pages branch for display using Github Pages. But this inscrutable error message comes up. There is a fairly simple fix, especially if you're using an HTTPS URL to access the Github repository.

Setting up the AWS Command-Line-Interface (CLI) tool on your laptop

(Mon Aug 10 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) The AWS platform is an incredibly diverse and mature cloud hosting platform, and the AWS CLI is your gateway to interacting with AWS from the comfort of your laptop. Instead of going click-click-click on the AWS website, you type commands from the command line, and you can even use those commands in scripts for semi-automated control of AWS resources. In this guide we'll go over how to install the AWS CLI tool on your laptop.

Using NGINX, Lets Encrypt and Cron in Docker to manage HTTPS/SSL certificates for multiple domains

(Sun Jul 05 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) NGINX is a hugely flexible webserver with which it's very easy to manage HTTPS with Lets Encrypt. With a simple configuration file it is easy to add HTTPS support to a back-end service, using NGINX's reverse proxy. It's possible to use this for deployments both small and large. As with any website Internet-visible nowadays, it is necessary to use HTTPS. Which leads to the task of using Lets Encrypt to provision SSL certificates for several domains, using NGINX to terminate the HTTPS connections, while proxying from NGINX to the actual services. This blog post discusses a Docker container designed explicitly for that purpose.

Manage Letsenrypt HTTPS/SSL certificates with a Docker container using Cron, Nginx, and Certbot

(Mon Jun 29 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) Modern websites must have HTTPS support for security reasons. As a result web browsers and search engines have begun downgrading sites that do not support HTTPS. That means we all must have a simple, low cost, way to set up HTTPS support on our websites. The Letsencrypt project offers free SSL certificates for HTTPS. In this project we will create a Docker container for handling HTTPS via Nginx, and automated SSL certificate renewal using the Letsencrypt command-line tools (Certbot).

Avoid 'could not be accessed' error when deploying a Service to a Docker Swarm on AWS

(Sat May 30 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) Launching a Docker Swarm on EC2 instances is relatively easy, but of course there are pitfalls. One involves deploying a service to the swarm, but getting an error message about being unable to access the container image from the ECR registry.

Creating a Docker Swarm using Multipass and Ubuntu 20.04 on your laptop

(Thu May 21 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) Docker is a cool system for deploying applications as reusable containers, and Docker Swarm is a Docker Orchestrator that let's us scale the number of containers across multiple machines. Multipass is a very light weight virtual machine manager application running on Windows, Linux and macOS, that let's us easily set up multiple Ubuntu instances on our laptop at low performance impact. Therefore Multipass can serve as a means to easily experiment with Docker Swarm on your laptop, learning how it works, setting up networks, etc.

How to correctly log in to AWS Elastic Container Registry on Windows command line

(Sun May 10 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) The Elastic Container Registry (ECR) is a Docker container registry for use while deploying containers to AWS ECS. It is convenient and relatively easy to use. AWS helpfully supplies command strings to log in to ECR from the command line so you can publish container images with docker push. But the supplied command line for Windows doesn't work right, and needlessly relies on a tool that seems to not be very useful.

Correctly launch MySQL on Docker for Windows, avoiding 'Bind on unix socket' error

(Wed May 06 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) Docker is an excellent tool for launching Linux-containerized applications, and it even runs on Windows. But running Docker containers on Windows has a few unexpected rough edges. One will come if you try the default way to launch MySQL doesn't work on Windows. Instead of the expected successful launch you might instead be told Can't start server : Bind on unix socket and asked whether there is another MySQL server running. That misleading error can send you on a tangential wild goose chase.

Solve 'Drive has not been shared' error with Docker on Windows

(Tue May 05 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) We often mount folders into a Docker container to ensure data is persistent while letting us freely destroy and recreate the container. But on Windows you might get a head-scratching error message saying "Unhandled exception: Drive has not been shared". The most common advice that might come up when searching the Internet is not about this situation, but about general file sharing in Windows. In this case the error refers to configuration settings in Docker.

Easily launch RDS and EC2 instance, with SSH access, using Terraform

(Mon Apr 06 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) We commonly must deploy on AWS both running code and a database service. AWS offers a cloud based database system, RDS, and in this tutorial we will look at launching an AWS EC2 instance along with an RDS database inside a custom-built AWS Virtual Private Cluster (VPC). The RDS database will not be reachable from the public Internet, and only from within the VPC we will create. Our tool for this will be Terraform, a powerful tool for configuring infrastructure on a long list of cloud-based systems

Easily launch EC2 instance, with SSH access, using Terraform

(Sat Apr 04 2020 00:00:00 GMT+0300 (Eastern European Summer Time)) Terraform is a powerful tool for configuring infrastructure on a long list of cloud-based systems. Since AWS is such a complex system we look for simpler ways to do anything on AWS. Terraform promises to make AWS deployments much simpler. To test that let's learn how to deploy some EC2 instances on AWS using Terraform.

How to fix AWS CLI hangs on AWS EC2 instance

(Wed Mar 18 2020 00:00:00 GMT+0200 (Eastern European Standard Time)) It seems that setting up an AWS EC2 instance in the default VPC stands a high chance of being unable to use the AWS CLI from inside the instance. That was my experience, anyway, and the solution is extremely non-obvious, non-intuitive, and requires ensuring that the instance can do outbound HTTPS traffic, and uses the correct public DNS servers.

Installing a self-hosted Docker Registry to aid Docker image development

(Sun Mar 15 2020 00:00:00 GMT+0200 (Eastern European Standard Time)) When developing Docker images it's useful to store them in a Docker registry. While using Docker Hub is free, it's bad form to fill up that shared resource with images built for personal use. It's better to only publish the Docker images that are truly useful to everyone, and that have documentation. That leaves us with the problem of a location to host our own Docker images. Do we pay for a private repository somewhere? Or, as a self-hoster, do we host a local Docker Registry to store our personal Docker images? In this post let's explore the latter idea.

Setting up Docker for an easy-to-configure self-hosting environment

(Sun Mar 15 2020 00:00:00 GMT+0200 (Eastern European Standard Time)) Self-hosting is about hosting Internet services in an easy-to-manage environment. Docker is an excellent tool for managing these kind of services since it is easy to reuse software packages, and it has a fairly strong security barrier around those packages. In many cases we'll just need to install and configure the Docker container. But to ease the task we need a well organized system for managing configuration files, data directories, and other stuff associated with running several Docker containers.

Installing Gitea for self-hosted Git service, replacing Gogs

(Wed Mar 11 2020 00:00:00 GMT+0200 (Eastern European Standard Time)) While Gogs is an excellent tool to have a self-hosted Git service (like Github), I recently found out the project is semi-abandoned. A group of Gogs users launched Gitea as a replacement, and in any case it looks like a better server. The goal here is to install Gitea, evaluate it, and see how to convert Gogs-based repositories over to Gitea. The result will be managed in the Docker self-hosting machine I have at home.

Easily manage Docker containers on both local and remote Docker hosts with Portainer

(Mon Mar 09 2020 00:00:00 GMT+0200 (Eastern European Standard Time)) Docker is a wonderful advancement for software engineers and system administrators. It simplifies launching and maintaining background processes, while adding a layer of much-needed encapsulation and security. But the default command-line administrative tools are less than pleasant to use, and we instead want a good GUI with which to manage our Docker hosts. That's where Portainer comes in. It manages the Docker containers we have running on our local host, or on remote hosts.

Directly deploying a Docker service to AWS ECS using Docker Compose

(Thu Feb 06 2020 00:00:00 GMT+0200 (Eastern European Standard Time)) Deploying Docker services to AWS ECS is becoming much simpler thanks to new feature collaboration between the Docker and AWS teams. It is now possible to take a normal Docker Compose file, using modern Compose features, and deploy directly to AWS. Nothing complex or unusual is required, with all the complexity handled under the covers with a generated CloudFormation file. In this article we'll take a first look at using these features, which are in early release right now.

Run Linux/X11 apps in Docker and display on a Mac OS X desktop

(Tue Dec 10 2019 00:00:00 GMT+0200 (Eastern European Standard Time)) While the MacPorts and Homebrew projects bring many Linux apps to the Mac environment, they don't support every app we'd want to run. Since the X11 environment is not native to macOS it's not a simple recompile, since you have to rewrite the GUI system. Thankfully there is an X11 display server for Mac OS X that can be used to run an application in a Linux environment and display it on the macOS desktop. In this article we'll look at one way to get this all connected up and running.

Understanding how Python classes work

(Thu Sep 26 2019 00:00:00 GMT+0300 (Eastern European Summer Time)) Python classes allow programmers to define new data types to use in their programs. They act like a blueprint with which a program creates objects. Objects can contain both methods and attributes, giving us a useful higher-level abstraction over the built-in Python data types.

Google's Accelerated Mobile Pages (AMP) considered harmful to web freedom - change my mind

(Fri Aug 23 2019 00:00:00 GMT+0300 (Eastern European Summer Time)) Google first told us about AMP five years ago, spinning it as a way to - as the name suggests - speed up the web experience on mobile devices. Mobile devices are clearly extremely important, since most people are using such devices to read websites. Since mobile devices have constrained abilities, we should develop websites with technology to match, and AMP was a way to force us to do so. While laudable, the implementation puts Google squarely in control of web technology, and that's not right.

Managing versioned machine learning datasets in DVC, and easily share ML projects with colleagues

(Tue Jul 23 2019 00:00:00 GMT+0300 (Eastern European Summer Time)) DVC is a powerful set of tools for managing data files associated with data science or machine learning projects. It works hand-in-hand with a Git repository to track both the code and the datasets in an ML project. A core feature is for versioning datasets, meaning that it correlates the dataset to exactly match what existed at each Git commit. By using a DVC "remote cache" it is very easy to share a project with colleagues, or to copy the dataset to a remote machine.

Introduction to using DVC to manage machine learning project datasets

(Sun Jul 07 2019 00:00:00 GMT+0300 (Eastern European Summer Time)) DVC is a powerful set of tools for managing data files associated with data science or machine learning projects. The code for such a project is committed to a Git repository, and DVC manages the data files in parallel to that repository.