Pages

Sunday, January 2, 2022

How To Containerize Applications (docker)

Build Docker Image

Front-End App

cd $HOME/gowebapp/gowebapp

There should be a Dockerfile. Something like ...

FROM ubuntu

COPY ./code /opt/gowebapp
COPY ./config /opt/gowebapp/config

EXPOSE 8080
USER 1000

WORKDIR /opt/gowebapp/
ENTRYPOINT ["/opt/gowebapp/gowebapp"]

The command to build the docker image

docker build -t gowebapp:v1 .

Back-end App

cd $HOME/gowebapp/gowebapp-mysql

Dockerfile ...

FROM mysql:5.6

USER 1000

COPY gowebapp.sql /docker-entrypoint-initdb.d/

The command to build the docker image

docker build -t gowebapp-mysql:v1 .

Run and test Docker images locally

Create Docker user-defined network

docker network create gowebapp

Launch frontend and backend containers

docker run --net gowebapp --name gowebapp-mysql --hostname gowebapp-mysql -d -e MYSQL_ROOT_PASSWORD=mypassword gowebapp-mysql:v1

sleep 20

docker run -p 8080:8080 --net gowebapp -d --name gowebapp --hostname gowebapp gowebapp:v1

Inspect the MySQL database

Connect to containerized MySQL

docker exec -it gowebapp-mysql mysql -u root -pmypassword gowebapp

Run some simple SQL commands 

#Simple SQL to navigate
SHOW DATABASES;
USE gowebapp;
SHOW TABLES;
SELECT * FROM <table_name>;
exit;

Cleanup application containers

docker rm -f gowebapp gowebapp-mysql

Create and push Docker images to Docker registry

Tag images to target another registry

docker tag gowebapp:v1 $REGISTRY_HOST/gowebapp:v1
docker tag gowebapp-mysql:v1 $REGISTRY_HOST/gowebapp-mysql:v1

Publish images to the registry

docker push $REGISTRY_HOST/gowebapp:v1
docker push $REGISTRY_HOST/gowebapp-mysql:v1



No comments:

Post a Comment