<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: DEVESH MASANE</title>
    <description>The latest articles on Forem by DEVESH MASANE (@masanedevesh).</description>
    <link>https://forem.com/masanedevesh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F173448%2Fc74c43e9-110b-4d46-b590-6e6abfea087a.jpeg</url>
      <title>Forem: DEVESH MASANE</title>
      <link>https://forem.com/masanedevesh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/masanedevesh"/>
    <language>en</language>
    <item>
      <title>Docker Compose: Quick Local Development Setup - Postgresql</title>
      <dc:creator>DEVESH MASANE</dc:creator>
      <pubDate>Sun, 03 Mar 2024 18:25:46 +0000</pubDate>
      <link>https://forem.com/masanedevesh/docker-compose-quick-local-development-setup-postgresql-deo</link>
      <guid>https://forem.com/masanedevesh/docker-compose-quick-local-development-setup-postgresql-deo</guid>
      <description>&lt;p&gt;Hello everyone,&lt;/p&gt;

&lt;p&gt;Sharing a quick setup guide for PostgreSQL docker-compose to get your local development started. &lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;em&gt;Prerequisite: &lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; &amp;amp; &lt;a href="https://docs.docker.com/compose/install/linux/" rel="noopener noreferrer"&gt;docker-compose&lt;/a&gt; installed&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's Start&lt;/strong&gt;&lt;br&gt;
Please create a new yml file(I created &lt;em&gt;postgres-local.yml&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Select the version of Postgres from &lt;a href="https://hub.docker.com/_/postgres" rel="noopener noreferrer"&gt;Dockerhub&lt;/a&gt; that you wish to use. I will be using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;postgres:16.2-alpine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Edit the yml file&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

services:
  local-postgres-service:
    container_name: local-postgresql
    image: postgres:16.2-alpine


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;local-postgres-service&lt;/em&gt; - Name of service&lt;br&gt;
&lt;em&gt;local-postgresql&lt;/em&gt; - Name of docker container&lt;br&gt;
&lt;em&gt;postgres:16.2-alpine&lt;/em&gt; - postgres image with tag from Dockerhub&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, we need to set the environment variables for our PostgreSQL&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

services:
  local-postgres-service:
    container_name: local-postgresql
    image: postgres:16.2-alpine
    environment:
      POSTGRES_USER: postgres_user
      POSTGRES_PASSWORD: pass123
      POSTGRES_DB: local-db


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;postgres_user&lt;/em&gt; - username&lt;br&gt;
&lt;em&gt;pass123&lt;/em&gt; - password&lt;br&gt;
&lt;em&gt;local-db&lt;/em&gt; - database name&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To connect with this postgres container we need to bind port. Postgres container will run at port 5432, we will bind this to port 5000.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

services:
  local-postgres-service:
    container_name: local-postgresql
    image: postgres:16.2-alpine
    environment:
      POSTGRES_USER: postgres_user
      POSTGRES_PASSWORD: pass123
      POSTGRES_DB: local-db
    ports:
      - "5000:5432"


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;We need to make the data persistent using docker volumes.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

services:
  local-postgres-service:
    container_name: local-postgresql
    image: postgres:16.2-alpine
    environment:
      POSTGRES_USER: postgres_user
      POSTGRES_PASSWORD: pass123
      POSTGRES_DB: local-db
    ports:
      - "5000:5432"
    volumes:
      - local-postgres-volume:/var/lib/postgresql/data

volumes:
  local-postgres-volume:


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;local-postgres-volume&lt;/em&gt; - volume name where data will persist&lt;br&gt;
&lt;em&gt;/var/lib/postgresql/data&lt;/em&gt; - path of data inside postgres container&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Finally, let's add this to a docker network&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

services:
  local-postgres-service:
    container_name: local-postgresql
    image: postgres:16.2-alpine
    environment:
      POSTGRES_USER: postgres_user
      POSTGRES_PASSWORD: pass123
      POSTGRES_DB: local-db
    ports:
      - "5000:5432"
    volumes:
      - local-postgres-volume:/var/lib/postgresql/data
    networks:
      - local-postgres-network

volumes:
  local-postgres-volume:

networks:
  local-postgres-network:


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;local-postgres-network&lt;/em&gt; - docker network name&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Start the container in detach mode using:&lt;br&gt;
&lt;code&gt;docker compose -f postgres-local.yml up -d&lt;/code&gt;&lt;br&gt;
Stop the container using:&lt;br&gt;
&lt;code&gt;docker compose -f postgres-local.yml stop&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Let's check the connection to our postgres container&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe27xnmhw5scr4bl5th4z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe27xnmhw5scr4bl5th4z.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading !!!&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>docker</category>
      <category>database</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
