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
Stiahneme si Docker Desktop na stránke:
https://hub.docker.com/editions/community/docker-ce-desktop-windows/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