{"id":133,"date":"2026-05-18T12:20:39","date_gmt":"2026-05-18T12:20:39","guid":{"rendered":"https:\/\/tamer-az.com\/?p=133"},"modified":"2026-05-18T12:20:39","modified_gmt":"2026-05-18T12:20:39","slug":"work-with-docker-compse","status":"publish","type":"post","link":"https:\/\/tamer-az.com\/?p=133","title":{"rendered":"Work with docker compse"},"content":{"rendered":"<p><span class=\"svelte-1fz0gqk\">A\u00a0<\/span><code class=\"svelte-1fz0gqk\">docker-compose.yml<\/code><span class=\"svelte-1fz0gqk\">\u00a0file defines and orchestrates multi-container Docker applications using a simple YAML syntax. It allows you to specify services, networks, volumes, and configurations in one place, enabling reproducible environments with commands like\u00a0<\/span><code class=\"svelte-1fz0gqk\">docker compose up<\/code><span class=\"svelte-1fz0gqk\">. The file must be properly structured with correct indentation and syntax.\u00a0<\/span><\/p>\n<h3 id=\"prerequisites\" class=\"heading svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Prerequisites<\/span><\/h3>\n<ul class=\"svelte-1fz0gqk\">\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Docker and Docker Compose installed on your system<\/span><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">A project directory where you&#8217;ll create the file<\/span><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Basic understanding of your application\u2019s dependencies (e.g., databases, ports, environment variables)\u00a0<\/span><\/p>\n<\/li>\n<li>\n<h3 id=\"step-by-step-instructions\" class=\"heading svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Step-by-step instructions<\/span><\/h3>\n<ul class=\"svelte-1fz0gqk\">\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Create a project directory and navigate into it:<\/span><br class=\"svelte-1fz0gqk\" \/><code class=\"svelte-1fz0gqk\">mkdir myproject &amp;&amp; cd myproject<\/code><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Create a new file named\u00a0<\/span><code class=\"svelte-1fz0gqk\">docker-compose.yml<\/code><span class=\"svelte-1fz0gqk\">\u00a0using a text editor:<\/span><br class=\"svelte-1fz0gqk\" \/><code class=\"svelte-1fz0gqk\">touch docker-compose.yml<\/code><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Define the version (optional in newer versions of Compose) and start the\u00a0<\/span><code class=\"svelte-1fz0gqk\">services<\/code><span class=\"svelte-1fz0gqk\">\u00a0section<\/span><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Add each service (e.g., web, database) with its configuration:<\/span><\/p>\n<ul class=\"svelte-1fz0gqk\">\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Use\u00a0<\/span><code class=\"svelte-1fz0gqk\">build<\/code><span class=\"svelte-1fz0gqk\">\u00a0if you\u2019re building an image from a Dockerfile<\/span><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Use\u00a0<\/span><code class=\"svelte-1fz0gqk\">image<\/code><span class=\"svelte-1fz0gqk\">\u00a0to pull a pre-built image from a registry<\/span><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Map ports using the\u00a0<\/span><code class=\"svelte-1fz0gqk\">ports<\/code><span class=\"svelte-1fz0gqk\">\u00a0key (e.g.,\u00a0<\/span><code class=\"svelte-1fz0gqk\">\"8000:5000\"<\/code><span class=\"svelte-1fz0gqk\">\u00a0to expose host port 8000 to container port 5000)<\/span><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Mount volumes for persistent data or code syncing using\u00a0<\/span><code class=\"svelte-1fz0gqk\">volumes<\/code><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Set environment variables with the\u00a0<\/span><code class=\"svelte-1fz0gqk\">environment<\/code><span class=\"svelte-1fz0gqk\">\u00a0key<\/span><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Specify dependencies between services using\u00a0<\/span><code class=\"svelte-1fz0gqk\">depends_on<\/code><\/p>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Optionally configure health checks, networks, and secrets<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"svelte-1fz0gqk\">\n<p class=\"svelte-1fz0gqk\"><span class=\"svelte-1fz0gqk\">Save the file and test it by running:<\/span><br class=\"svelte-1fz0gqk\" \/><code class=\"svelte-1fz0gqk\">sudo docker compose up --dry-run<\/code><span class=\"svelte-1fz0gqk\">\u00a0(to validate)<\/span><br class=\"svelte-1fz0gqk\" \/><code class=\"svelte-1fz0gqk\">sudo docker compose up<\/code><span class=\"svelte-1fz0gqk\">\u00a0(to start services)<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>A\u00a0docker-compose.yml\u00a0file defines and orchestrates multi-container Docker applications using a simple YAML syntax. It allows you to specify services, networks, volumes, and configurations in one place, enabling reproducible environments with commands like\u00a0docker compose up. The file must be properly structured with correct indentation and syntax.\u00a0 Prerequisites Docker and Docker Compose installed on your system A project directory where you&#8217;ll create the<\/p>\n<div class=\"clearfix\"><\/div>\n<div class=\"pull-left padding-top-25\"><a href=\"https:\/\/tamer-az.com\/?p=133\" class=\"btn btn-theme\">Continue reading<span class=\"screen-reader-text\"> &#8220;Work with docker compse&#8221;<\/span> <i class=\"fa fa-fw fa-long-arrow-right\"><\/i> <\/a>  <\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-133","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/tamer-az.com\/index.php?rest_route=\/wp\/v2\/posts\/133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tamer-az.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tamer-az.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tamer-az.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tamer-az.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=133"}],"version-history":[{"count":1,"href":"https:\/\/tamer-az.com\/index.php?rest_route=\/wp\/v2\/posts\/133\/revisions"}],"predecessor-version":[{"id":134,"href":"https:\/\/tamer-az.com\/index.php?rest_route=\/wp\/v2\/posts\/133\/revisions\/134"}],"wp:attachment":[{"href":"https:\/\/tamer-az.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamer-az.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamer-az.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}