<?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>DEV Community: minyic22</title>
    <description>The latest articles on DEV Community by minyic22 (@minyic22).</description>
    <link>https://dev.to/minyic22</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%2F1072829%2F1ac85a8c-ee85-4a88-beaf-9a032db99b95.jpg</url>
      <title>DEV Community: minyic22</title>
      <link>https://dev.to/minyic22</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/minyic22"/>
    <language>en</language>
    <item>
      <title>A stock market analysis web application (1/n)</title>
      <dc:creator>minyic22</dc:creator>
      <pubDate>Thu, 04 May 2023 08:52:16 +0000</pubDate>
      <link>https://dev.to/minyic22/a-stock-market-analysis-web-application-1n-43pj</link>
      <guid>https://dev.to/minyic22/a-stock-market-analysis-web-application-1n-43pj</guid>
      <description>&lt;p&gt;I want to create a  web application as a practice for my skills in front-end web development, data scraping, cleaning, visualization, and back-end database management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But, I know nothing about stock!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, in this blog, I am just gonna get myself familiar with some of the terminologies. If anyone happens to read this blog, and find any errors please let me know with a comment, thank you very much.&lt;/p&gt;




&lt;p&gt;Refer to the U.S Securities and Exchange Commission (SEC)'s official website to details: &lt;a href="https://www.investor.gov/introduction-investing/investing-basics/investment-products/stocks#:~:text=Stocks%20are%20a%20type%20of,also%20are%20called%20%E2%80%9Cequities.%E2%80%9D"&gt;click me&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a stock?
&lt;/h2&gt;

&lt;p&gt;Stocks are a type of investment product that represent ownership in a company and a claim on a portion of the company's assets and earnings. They also are called 'equities'&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do people stocks?
&lt;/h2&gt;

&lt;p&gt;Also according to SEC, for the following reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Capital appreciation, which occurs when a stock rises in price&lt;/li&gt;
&lt;li&gt;Dividend payments, which come when the company distributes some of its earnings to stockholders&lt;/li&gt;
&lt;li&gt;Ability to vote shares and influence the company&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why do companies issue stock?
&lt;/h2&gt;

&lt;p&gt;Company needs money!&lt;/p&gt;

&lt;h2&gt;
  
  
  How to buy and sell stocks?
&lt;/h2&gt;

&lt;p&gt;There are various ways available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A direct stock plan&lt;/li&gt;
&lt;li&gt;A dividend reinvestment plan&lt;/li&gt;
&lt;li&gt;A discount or full-service broker&lt;/li&gt;
&lt;li&gt;A stock fund&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What stock to buy?
&lt;/h2&gt;

&lt;p&gt;This will be the key purpose of this study, I don't have a broker who does research and give me investment advice, hence, I wonder if I can do some research myself and then make purchase.&lt;/p&gt;

&lt;p&gt;📝 Note, do not expect to much from stock market, the sole purpose of doing this is to practice building an web application while learning a little bit more about stocks~&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Setting up Vite+React+TS with Docker Compose for Development and Production</title>
      <dc:creator>minyic22</dc:creator>
      <pubDate>Thu, 27 Apr 2023 13:09:26 +0000</pubDate>
      <link>https://dev.to/minyic22/setting-up-vitereactts-with-docker-compose-for-development-and-production-43em</link>
      <guid>https://dev.to/minyic22/setting-up-vitereactts-with-docker-compose-for-development-and-production-43em</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hi, fellow readers this blog is created just in case I forget how to setup the Vite project with Docker in the future and also help people who struggled with same issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;If you are trying to follow this guide, I will assume you have the following installed on you OS already:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Procedures
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Create a project with Vite
&lt;/h3&gt;

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

npm create vite@latest


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

&lt;/div&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%2Fjehpxlezl39y53wjnnw2.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%2Fjehpxlezl39y53wjnnw2.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You don't have to follow my setup, I just prefer to use TypeScript whenever possible.&lt;/p&gt;

&lt;p&gt;The following image presents the files in the project created:&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%2Fe6umug0dx5kb5gv4zqhz.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%2Fe6umug0dx5kb5gv4zqhz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, edit &lt;code&gt;vite.config.ts&lt;/code&gt; as below:&lt;/p&gt;

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

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;react&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vitejs/plugin-react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="c1"&gt;// https://vitejs.dev/config/&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;react&lt;/span&gt;&lt;span class="p"&gt;()],&lt;/span&gt;
  &lt;span class="na"&gt;server&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;watch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;usePolling&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// needed for the Docker Container port mapping to work&lt;/span&gt;
    &lt;span class="na"&gt;strictPort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// not necessary&lt;/span&gt;
    &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// you can replace this port with any port&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;host&lt;/code&gt; option is set to &lt;code&gt;true&lt;/code&gt;, which is required for the Docker container port mapping to work correctly.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;strictPort&lt;/code&gt; option is set to &lt;code&gt;true&lt;/code&gt;, which means that the application will only listen on the specified &lt;code&gt;port&lt;/code&gt; and will not fall back to a different port if the specified port is unavailable.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;port&lt;/code&gt; option specifies that the application should listen on port 3000, which can be replaced with any other port number as needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Setup Dockerfile and .dockerignore
&lt;/h3&gt;

&lt;p&gt;Now add a &lt;code&gt;Dockerfile&lt;/code&gt; to the current working directory, and enter the following content:&lt;/p&gt;

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

FROM node as development

WORKDIR /usr/src/app

COPY package*.json .

RUN npm install

COPY . .

RUN npm run build

FROM nginx:stable-alpine as production

COPY --from=development /usr/src/app/dist /usr/share/nginx/html

COPY nginx.conf /etc/nginx/conf.d/default.conf

CMD ["nginx", "-g", "daemon off;"]


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

&lt;/div&gt;

&lt;p&gt;A Dockerfile is a set of instructions that specifies how to build a Docker image with all the necessary components to run an application. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Because Dockerfile has cache to commands that are already executed, hence it is important to put &lt;code&gt;COPY package*.json .&lt;/code&gt; before &lt;code&gt;RUN npm install&lt;/code&gt; so &lt;code&gt;npm install&lt;/code&gt; will not be executed every time the project is updated and copied to WORKDIR.&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

COPY package*.json .

RUN npm install

COPY . . # copy from . project directory to . WORKDIR


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

&lt;p&gt;It can have multiple stages thanks to Docker's layer structure, as demonstrated by the &lt;code&gt;FROM&lt;/code&gt; keyword in this example, with stages for development and production.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The first stage is &lt;code&gt;FROM node as development&lt;/code&gt;, which means that we are using a Node.js image as the base image and calling it &lt;code&gt;development&lt;/code&gt;. The subsequent commands in this stage will build an image that is suitable for development purposes.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;WORKDIR /usr/src/app&lt;/code&gt; command sets the working directory for the subsequent commands to &lt;code&gt;/usr/src/app&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;COPY package*.json .&lt;/code&gt; command copies the package.json and package-lock.json files into the Docker image's working directory.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;RUN npm install&lt;/code&gt; command installs the dependencies specified in the &lt;code&gt;package.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;COPY . .&lt;/code&gt; command copies the entire application codebase into the Docker image's working directory.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;RUN npm run build&lt;/code&gt; command builds the application by running the &lt;code&gt;build&lt;/code&gt; script specified in the &lt;code&gt;package.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;The second stage is &lt;code&gt;FROM nginx:stable-alpine as production&lt;/code&gt;, which means that we are using an Nginx image as the base image and calling it &lt;code&gt;production&lt;/code&gt;. The subsequent commands in this stage will build an image that is suitable for production purposes.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;COPY --from=development /usr/src/app/dist /usr/share/nginx/html&lt;/code&gt; command copies the built application files from the &lt;code&gt;development&lt;/code&gt; stage to the &lt;code&gt;/usr/share/nginx/html&lt;/code&gt; directory in the &lt;code&gt;production&lt;/code&gt; stage.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;COPY nginx.conf /etc/nginx/conf.d/default.conf&lt;/code&gt; command copies the &lt;code&gt;nginx.conf&lt;/code&gt; file to the default Nginx configuration directory.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;CMD ["nginx", "-g", "daemon off;"]&lt;/code&gt; command sets the command to run when a container is started from the image. In this case, it starts the Nginx server and runs it in the foreground, with the &lt;code&gt;daemon off;&lt;/code&gt; option telling Nginx to run in the foreground.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To ensure only the necessary files are present in production, this Dockerfile installs and builds only during development, copying the &lt;code&gt;dist/&lt;/code&gt; folder to the production environment, which relies on a static web page served using Nginx as a reverse proxy.&lt;/p&gt;

&lt;p&gt;Also add the following &lt;code&gt;.dockerignore&lt;/code&gt; file so &lt;code&gt;node_modules&lt;/code&gt; and &lt;code&gt;dist&lt;/code&gt; does not get copied, because they will be created when &lt;code&gt;Dockerfile&lt;/code&gt; is executed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Create docker-compose.dev.yml and docker-compoes.yml for development and production
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;create &lt;code&gt;docker-compose.dev.yml&lt;/code&gt; for development&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

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

  version: '3.8'

  services:
    nao_drawing_board_dev:
      build:
        context: .
        target: development
      volumes:
        - .:/usr/src/app
        - /usr/src/app/node_modules
      ports:
        - 3000:3000
      command: npm run dev



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

&lt;/div&gt;

&lt;p&gt;The above configuration file is written in YAML and is used to define a Docker service called &lt;code&gt;nao_drawing_board_dev&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;build&lt;/code&gt; section specifies that the Docker image for the service should be built using the &lt;code&gt;Dockerfile&lt;/code&gt; in the current directory (&lt;code&gt;context: .&lt;/code&gt;) and that the &lt;code&gt;development&lt;/code&gt; stage should be used (&lt;code&gt;target: development&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;volumes&lt;/code&gt; section specifies two volumes to be mounted for the service: the current directory (&lt;code&gt;.&lt;/code&gt;) to &lt;code&gt;/usr/src/app&lt;/code&gt; inside the container, and the &lt;code&gt;node_modules&lt;/code&gt; directory inside the container to prevent it from being overwritten by the mounted volume.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;ports&lt;/code&gt; section specifies that port 3000 on the host machine should be mapped to port 3000 inside the container, which is where the &lt;code&gt;npm run dev&lt;/code&gt; command is run.&lt;/p&gt;

&lt;p&gt;Overall, this &lt;code&gt;docker-compose.yml&lt;/code&gt; configuration file sets up a development environment for a Node.js application in a container, with the source code mounted as a volume and the container exposing port 3000 for local development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create &lt;code&gt;docker-compose.yml&lt;/code&gt; for production&lt;/li&gt;
&lt;/ul&gt;

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

  version: '3.8'

  services:
    api:
      build:
        context: .
        target: production
      ports:
        - "80:80"


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

&lt;/div&gt;

&lt;p&gt;The above configuration file is written in YAML and is used to define a Docker service called &lt;code&gt;nao_drawing_board&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;build&lt;/code&gt; section specifies that the Docker image for the service should be built using the &lt;code&gt;Dockerfile&lt;/code&gt; in the current directory (&lt;code&gt;context: .&lt;/code&gt;) and that the &lt;code&gt;production&lt;/code&gt; stage should be used (&lt;code&gt;target: production&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;ports&lt;/code&gt; section specifies that port 80 on the host machine should be mapped to port 80 inside the container.&lt;/p&gt;

&lt;p&gt;Overall, this &lt;code&gt;docker-compose.yml&lt;/code&gt; configuration file sets up a production environment for a web application in a container, with the container exposing port 80 for external access.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; is a configuration file that simplifies the process of defining and running multi-container Docker applications. It allows you to define the services, networks, and volumes required for your application, as well as their relationships and configurations, in one file. This makes it easy to manage complex multi-container applications and deploy them with a single command using &lt;code&gt;docker-compose&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Create nginx.conf
&lt;/h3&gt;

&lt;p&gt;As you may already notice, we have created a &lt;code&gt;nginx.conf&lt;/code&gt; in the project directory, which will be copied to docker image. Now let us edit the &lt;code&gt;nginx.conf&lt;/code&gt;  file:&lt;/p&gt;

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

server {
    listen       80;
    server_name  localhost;

    root /usr/share/nginx/html;

    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}


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

&lt;/div&gt;

&lt;p&gt;It is important to configure the listen port, root directory and index file if it is named otherwise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Build the docker image
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Build development image:
&lt;/h4&gt;

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

docker compose -f docker-compose.dev.yml up --build


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

&lt;/div&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%2Fmwr66pb31ilfz7rvwndw.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%2Fmwr66pb31ilfz7rvwndw.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you should be able to access the development server that is running in the docker image from web browser in you host machine.&lt;/p&gt;

&lt;p&gt;If no change is made to docker related files, you don't have to rebuild the image, you can just use the following:&lt;/p&gt;

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

docker compose -f docker-compose.dev.yml up


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

&lt;/div&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%2F089c1v50y4y3tkk8ppy5.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%2F089c1v50y4y3tkk8ppy5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note that, if you change the src code in development mode, it will be reflected on the web page.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Build production image:
&lt;/h4&gt;

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

docker compose up --build


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

&lt;/div&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%2Fey9ry2k4wsegn0vsik6l.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%2Fey9ry2k4wsegn0vsik6l.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you should be able to request the site from localhost:80(port 80 is default hence not revealed on image). &lt;/p&gt;

&lt;p&gt;Similarly, you don't have to rebuild the image if docker configuration is not changed:&lt;/p&gt;


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

&lt;p&gt;docker compose up&lt;/p&gt;

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

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Conclusion&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;The full source code is uploaded on the following repo: &lt;a href="https://github.com/minyic22/Docker_Quick_Start_Templates" rel="noopener noreferrer"&gt;https://github.com/minyic22/Docker_Quick_Start_Templates&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The next step will be uploaded the docker image with others for team development or pubic access.&lt;/p&gt;

&lt;p&gt;Will update when I have time.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
