Docker Basic
example docker file
FROM golang:alpine
RUN apk update && apk add git
WORKDIR /app
COPY . .
#COPY go.mod /app/go.mod
#COPY main.go /app/main.go
RUN go mod tidy
RUN go build -o binary
ENTRYPOINT["./binary"]
BUILD
docker build . -t my-app-image
docker build . -t bowo/my-app-image
BUILD USING TAG
docker build . -t my-app-image:v1
docker build . -t bowo/my-app-image:v1
IMAGE LS
docker image ls -a
IMAGE REMOVE
docker image rm -f <image_id>
RUN IMAGE AS CONTAINER
docker run -i -t -e PORT=8080 my-app-image
RUN IMAGE EQUAL COMMAND
docker container create -it -e PORT=8080 --name containerku my-app-image
docker container start containerku
RUN IMAGE AS CONTAINER DETACHED
docker run -itd -e PORT=8080 my-app-image
EXPOSE PORT
docker run -it -e PORT=8080 -p 5000:8080 my-app-image
CONTAINER LS
docker container ls -a
CONTAINER STOP
docker container stop <container_id>
CONTAINER REMOVE + FORCE
docker container rm -f <container_id>
BUILD ARGUMENTS
FROM golang:alpine
RUN apk update && apk add git
ARG DEFAULT_PORT
ENV PORT=${DEFAULT_PORT}
WORKDIR /app
COPY . .
#COPY go.mod /app/go.mod
#COPY main.go /app/main.go
RUN go mod tidy
RUN go build -o binary
ENTRYPOINT["./binary"]
docker build . -t my-app-image --build-arg DEFAULT_PORT=8080
DOCKER LOGS
docker logs <container_id>
DOCKER PUSH
docker push brainplusplus/my-app-image:latest
DOCKER PULL
docker pull brainplusplus/my-app-image:latest
DOCKER MARIADB
DOCKER PULL MARIADB
docker pull mariadb
DOCKER RUN MARIADB
docker run -itd --name some-mariadb -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=yes -p 3306:3306 mariadb
DOCKER RUN MARIADB WITH VOLUME
docker run -itd --name some-mariadb -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=yes -v c:/Users/brainplusplus/Desktop/mariadb-data:/var/lib/mysql -p 3306:3306 mariadb
RUN SHELL IN CONTAINER
docker exec -it <container_id> sh
RUN MYSQL CLIENT IN CONTAINER
docker exec -it <container_id> mysql
NETWORK
NETWORK CREATE
docker network create my-network
NETWORK RM
docker network rm my-network
NETWORK LS
docker network ls
ASSIGN NETWORK IN CONTAINER
docker run -it --rm --network my-network --name some-mariadb -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=yes -v c:/Users/brainplusplus/Desktop/mariadb-data:/var/lib/mysql -p 3306:3306 mariadb
DOCKER COMPOSE
create folder orchestrator
mkdir orchestrator
move folder golang project into folder orchestrator
mv <your_project_path_with_dockerfile> orchestrator
create file docker-compose.yml on root folder orchestrator
touch docker-compose.yml
fill in on file docker-compose.yml
versions: '3.7'
services:
service-hello-world-v2:
build: ./hello-world-v2/
environtment:
- PORT=8082
- MYSQL_CONN_STRING=root@tcp(service-mariadb:3306)/hello_world?parseTime=true
ports:
- 8083:8082
networks:
- my-network
depends_on:
- service-mariadb
service-mariadb:
image: mariadb:latest
environtment:
- MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=yes
ports:
- 3306
volumes:
- c:/Users/brainplusplus/Desktop/mariadb-data:/var/lib/mysql
networks:
- my-network
networks:
my-network:
build docker compose
docker-compose build
and then
docker-compose up -d
to stop using this command
docker-compose down