Docker compose setup

Docker compose setup

 

Inštalácia

Linux

0. Ak mame starú verziu tak treba odinštalovať

sudo apt-get remove docker docker-engine docker.io containerd runc

Inštalácia Docker
Príprava pred inštaláciou

sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common

Pridanie GPG kľúča

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Overenie kľúča

sudo apt-key fingerprint 0EBFCD88

pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S]

Pridanie repositora do apt

sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"

Inštalácia

sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io sudo apt-cache madison docker-ce

Viac info na Ubuntu

Windows

  1. Stiahneme si Docker Desktop na stránke:
    https://hub.docker.com/editions/community/docker-ce-desktop-windows/

  2. Potrebne mat nainštalované WSL
    https://docs.microsoft.com/en-us/windows/wsl/install-win10

Prihlásenie a stiahnutie z privátneho repozitáru

Pre sťahovanie docker image z privátneho repozitára je možné použiť tieto príkazy:

sudo docker login -u MAIL -pHESLO <adresa na privátny docker register> sudo docker pull <private docker register>/REPO:TAG sudo docker images

(vo windowse bez “sudo”)

Nastavenie Docker compose s NAE

Vytvoríme si súbor s názvom docker-compose.yml

version: "3.3" services: mysql-service: <-- nazov servise build: <-- build z Dockerfilu potom zanedbava image hodnotu context: ./ dockerfile: Dockerfile image: mysql:5.7 <-- definicia docker imagu command: [] <-- Prikazy namiesto medzery dat "Ahoj","svet" ports - 80:8080 <-- Host:Container Port environment: <-- Enviroment MYSQL_ROOT_PASSWORD: secret <-- kluc:hodnota depends_on: <-- potrebuje pole - docker-mongo <-- nazov service

Príklad na Engine

docker-compose.yml

version: "3.3" services: # front: # image: demo:4.3.0 # ports: # - 80:80 # depends_on: # - engine # engine: # build: # context: ./ # dockerfile: Dockerfile # image: engine:4.3.0 # ports: # - 8080:8080 # depends_on: # - docker-mysql # - docker-mongo # - docker-neo4j # - docker-elastic # - docker-redis docker-mysql: image: mysql:5.7 healthcheck: test: "/usr/bin/mysql -u root -psecret -e \"show databases;\"" command: [ 'mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci' ] ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: DB_NAME MYSQL_USER: user MYSQL_PASSWORD: secret docker-mongo: image: mongo:4.2 ports: - 27017:27017 # environment: # MONGO_INITDB_ROOT_USERNAME: user # MONGO_INITDB_ROOT_PASSWORD: secret docker-neo4j: image: neo4j:3.5 ports: - 7474:7474 environment: NEO4J_AUTH: none docker-elastic: image: elasticsearch:6.8.15 environment: - cluster.name=elasticsearch - discovery.type=single-node ports: - 9300:9300 - 9200:9200 docker-redis: image: redis:5 ports: - 6379:6379

Vytvorenie vlastného docker image

Vytvoríme si súbor s názvom Dockerfile

Backend:

FROM openjdk:8-jdk MAINTAINER <???> RUN mkdir -p /src/main/ ARG JAR_FILE=target/*-exec.jar ARG RESOURCE=src/main/resources COPY ${RESOURCE} src/main/resources COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"]


Frontend:

FROM node as build WORKDIR /app COPY . . RUN npm install RUN npm run build FROM nginx MAINTAINER <???> COPY ./nginx.conf /etc/nginx/nginx.conf COPY --from=build /app/dist/* /usr/share/nginx/html EXPOSE 80 ENTRYPOINT ["nginx", "-g", "daemon off;"]

 

Databázy na vývoj

Príklad ako mať všetky databázy cez docker

version: "3.3" services: docker-mysql: image: mysql:5.7 healthcheck: test: "/usr/bin/mysql -u root -psecret -e \"show databases;\"" command: [ 'mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci' ] ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: DB_NAME MYSQL_USER: user MYSQL_PASSWORD: secret docker-mongo: image: mongo:4.2 ports: - 27017:27017 # environment: # MONGO_INITDB_ROOT_USERNAME: user # MONGO_INITDB_ROOT_PASSWORD: secret docker-neo4j: image: neo4j:3.5 ports: - 7474:7474 environment: NEO4J_AUTH: none docker-elastic: image: elasticsearch:6.8.15 environment: - cluster.name=elasticsearch - discovery.type=single-node ports: - 9300:9300 - 9200:9200 docker-redis: image: redis:5 ports: - 6379:6379

Spustenie

pre spustenie buildu pomocou dockerfilu:

docker build -t <image_tag> . && docker run <image_tag>

a spustenie docker-compose

docker-compose up