In this video, we'll look at how to set
up a PostgreSQL database using Docker. Let's get started. Here are the high level steps we need to do. First, we download the Docker application. Next, we set up an account on Docker Hub. Then, we run Docker and
download the PostgreSQL image. Then, we run the PostgreSQL image. Finally, we connect to the
database and run some SQL. This video is demonstrated on a Mac but
should work in a similar way on Windows. To get started, we need to
download the Docker application. This is freely available from the
Docker website, at www.docker.com. Once the website has loaded, click on Get Started. On the Get Started page, there are several
options. Click on Docker Desktop. The other two options, Docker Hub and Play with
Docker, are not needed for our process. Select the right version for your computer, which is either of the two Mac
versions or a Windows version. The Docker setup file will then begin downloading. It's about 580 MB which could
take a few minutes to download. Once the download is complete, install it.
This can be done by opening the file on MacOs and dragging it to the Applications folder, or
following the installation steps on Windows. It takes a couple of minutes to install. Once it is installed, you can run it. This
will cause the Docker service to start. I believe you can also run it from the
command line or from elsewhere in Mac, but this is the approach that has worked
for me and will hopefully work for you. Now we've got Docker running, it's
time to get our database files. The files that Docker uses to run applications
are called images, which are a pre-built collection of files. These images are
available on a website called Docker Hub. There are a whole range of images there, but
the one we're looking for is for PostgreSQL. So, we'll need to visit the Docker
Hub website, set up an account, find the right image, and then start
using it. Let's see how we can do that. First, visit the Docker Hub
website at hub.docker.com. You'll need an account to access the Docker
images, so click on the Sign Up button. Enter your details on the
Sign Up page. Remember the password you enter here as you'll need it later. The next page is the Choose Your Plan
page. There are a couple of options, but for now you can select the Free
plan. This is enough for our purposes. Follow the steps to verify your email address.
You now have an account on Docker Hub. Now we've logged in to Docker Hub, it's time
to find the image for the PostgreSQL database. We're going to get the URL for the image, and then use this URL as part of a
command we'll run on the command line. To find the image, enter the term "postgres"
into the search bar at the top of the page. You can enter "postgresql" instead,
and you'll see the same results. Click on the postgres entry here,
and you'll be taken to this page. If you scroll down a little, you can see a
few sample commands under the "How to use this image" section. Copy the command from the
first example here, which says "docker run", and is a template you can edit before running. There are a few things to note in this command. There are two dashes then a name
keyword, then some-postgres. This "some-postgres" is the name of the
image, which you can change if you like. This name is what's used when you start
and stop the image on your computer. The -e refers to environment variables.
There is only one in this command, and it's called postgres_password. This is where
we set the root password. In this example, it's specified as "mysecretpassword". This is something
you can also change before you run the command, and I'll show you how to do that shortly. The "-d" means detached mode, which means the container runs in the background
and we can use our terminal for other commands. The final part is the path to the image
on docker hub, which will be downloaded. This is the word "postgres". You can
add tags after this word postgres, if you want a specific version.
But for now, we don't need to. So, copy this command. We'll make a couple of
modifications to this command before we run it, which you may find easier to do
if you paste it into a text editor At the top is our command from the Docker
Hub page. We need to make two changes. The only thing you have to change
is to add a parameter of "-p", which is short for port. We then add two numbers,
separated by a colon. This will expose, or open the port from the Docker container to our main
operating system, or our host operating system. This will allow us to use a program such as
DBeaver to connect to the database. If we leave this out, then we'll have to run commands
on the Terminal to run SQL, which is not ideal. You can change the name of the image, which is
some-postgres here, to something else if you want. And you can change the postgres
password to something else. But the default values in the
command will work just fine. Now we have our command
updated, we need to run it. To do this, we need to open a command line
or terminal. I'll open the Terminal app as I'm on a Mac, but I believe the Command
Line on Windows will work in the same way. Once the Terminal app is open, we can start
the process of getting our Docker image. We're going to do three things: log in,
then download the image, then run it. We need to log in to the Docker Hub account first.
This is done using the docker login command. Enter "docker login" at the command line
and press enter. You'll be asked to enter your username and password, which is what you
provided when you created the Docker Hub account. Now we have logged in, we can download the image.
This can be done using the "docker pull" command, which is the command in the black
box we saw on the Docker Hub page. However, we can also use the "docker run"
command, which will run the container if it exists on your computer already,
and download it if it does not exist. So, paste the command here in the terminal window
that you updated from earlier in this video. Then, press Enter to run the command. The image will start downloading.
It may take a few minutes. Once the docker run command has completed, the image will start up. This
can take a minute or two. If you get an error about the name already
being used, then it's likely because you have run this command in the past and the container
name of "some-postgres" is already created. If so, you can start the existing container.
To do this, type "docker start some-postgres". After a moment, the image will start up. To check the status of your containers, you can run the command "docker ps". This
shows a list of all images that are running. In the status column, you'll see something
like "starting" to indicate the container is starting up. Run the docker ps command
again in a minute or two and you should see "healthy" or "up 10 seconds".
This means the container is running. Awesome! We now have a Docker container
running with our PostgreSQL database. Let's connect to it and run some SQL. We'll use DBeaver to connect, which is a freely
available IDE that works on Windows and MacOS. You can use whatever IDE you want.
The process should be similar but the screens will just look different in each IDE. For now, I'll assume you have an IDE
ready, such as DBeaver, so open it now. Click Create a new connection
and you'll see this window here. Select Postgres, and click Next The connection details are available
on the image page on Docker Hub and are also in the command we
ran, and we'll enter them here. For the host, enter localhost. For the port, set it to 5432, which is what
we added to the docker run command earlier. For the username, enter "postgres". For the password, enter the password you provided
when you ran the terminal command earlier. By default, this is mysecretpassword. Leave everything as the default, and click
Test Connection. If everything has been set up correctly, the connection should
be successful. If there are any errors, take a look at the description and comments
where I'll list a few ways to resolve them. You can then click OK to save
the connection. Click on the new connection on the grid here, and after a
moment, you'll be connected to the database. You should see a screen that looks like
this. A new SQL tab will be displayed. Enter a simple query, such as
selecting the current date, and run it. This should show the current date and time. You'll see the output on the screen here. Congratulations! You've successfully
set up a PostgreSQL database inside a Docker container and connected to it! If you have any errors, let me know
in the comments below. I'll put some resources in the Description
for some common issues as well. To stop the database, you can run the Docker
Stop command. Go back to the terminal, and enter "docker stop some-postgres", where
some-postgres is the name of your container. This will stop the container
and the PostgreSQL database. To start it again, use the docker
run command we saw earlier. That brings us to the end of this
tutorial. I'll create some other videos to cover things like persisting
data and automatically running scripts. If you learned something new from this
video, make sure to subscribe to my channel. If you want to learn more about
database design and development, visit databasestar.com. That’s where I
share my best database-related content. Which part of this Docker tutorial was the most
helpful for you? Was it the command to actually run the container? Or the steps to connect to
the database using your IDE? Or something else? Thanks for watching.