Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 7460ae47

Přidáno uživatelem Ondřej Váně před více než 4 roky(ů)

Re #7647: Spustitelná kostra řešení v dockeru

- úprava docker composeru pro ukládání verzí do docker hubu
- popsání releasu v README
- přidány skripty pro spuštění celé aplikace
- přepsání metod post na get pro jednodušší ovládání
- přejmenování adresy v BE na název dockeru

Zobrazit rozdíly:

README.md
1 1
# Indexace a fulltextové vyhledávání v historických obrazových dokumentech - ANONYMOUS
2 2

  
3 3
# Spuštění celé aplikace v dockeru
4
- nainstalovat docker [návod zde](https://docs.docker.com/docker-for-windows/install/)
5
- nastartovat docker `docker-machine start`
4
## Stažení image z docker hubu a spuštění (pro zadavatele)
5
- nainstalovat docker viz [Návody](#Návody)
6
- nastartovat docker
7
- stáhnout projekt nebo pouze soubory 
8
    - [docker-composer.yml](docker-compose.yml)
9
    - [run.sh](run.sh) Linux/Mac nebo [run.bat](run.bat) Windows
10
- v souboru docker-compose.yml všechny řádky, které obsahují buil     
11
- spustit skript `run`
12

  
13
## Lokální vytvoření image a spuštění
14
- nainstalovat docker viz Návody
15
- nastartovat docker
6 16
- přesunout se do root složky celého projektu (aswi2020anonymous)
7
- spustit příkaz `docker-compose up -d --force-recreate`
17
- spustit příkaz `docker-compose build`
18
- spustit příkaz `docker-compose up -d`
8 19
    - `-d` flag spustí všechny kontejnery na pozadí, takže můžete terminál použít pro jiné účely.
9
    - `--force-recreate` flag zastaví všechny spuštěné staré kontejnery a vytvoří nové.
10 20
- frontend nastartuje na adrese dockeru na portu 4200
11 21
- backend nastartuje na adrese dockeru na portu 8080
12 22

  
......
20 30
- spuštění testů `ng test` a `ng e2e`
21 31

  
22 32
### Spuštění v dockeru
23
- nainstalovat docker [návod zde](https://docs.docker.com/docker-for-windows/install/)
33
- nainstalovat docker viz Návody
24 34
- nastartovat docker `docker-machine start`
25 35
- přesunout se do složky ./fe/fulltextsearch
26 36
- spustit příkaz pro vytvoření docker image `docker build -t dockerangular .`
......
28 38
- frontend nastartuje na adrese dockeru na portu 4200
29 39

  
30 40
## Backend - Spring boot
41
### Spuštění lokálně
42
- za pomocí IDE (Java 11)
43

  
31 44
### Spuštění v dockeru
32
- nainstalovat docker [návod zde](https://docs.docker.com/docker-for-windows/install/)
45
- nainstalovat docker viz Návody
33 46
- nastartovat docker `docker-machine start`
34 47
- přesunout se do složky ./be/fulltextsearch
35 48
- spustit příkaz pro vytvoření docker image `docker build -t dockerspring .`
......
40 53
- stáhnout si Solr [zde](https://lucene.apache.org/solr/downloads.html)
41 54
- přesunout se do složky ...\solr-8.4.1\bin 
42 55
- nastartovat Solr příkazem `solr start`
43
- vytvořit core "documents" příkazem `solr create -c documents`
56
- vytvořit core "documents" příkazem `solr create -c documents`
57

  
58
# Postup pro uvolnění nové verze a uložení na docker hub
59
- spustit docker
60
- povýšit verze v následujících souborech
61
    - backend [pom.xml](./be/fulltextsearch/pom.xml) (X.X.X-SNAPSHOT)
62
    - frontend [package.json](./fe/fulltextsearch/package.json) ("version": "X.X.X")
63
    - docker composer [docker-composer.yml](docker-compose.yml) (image: ondrejvane/fulltextsearch-backend:0.0.1 a ondrejvane/fulltextsearch-frontend:0.0.1)
64
- přesunout se do root složky celého projektu (tam kde je soubor docker-composer.yml)
65
- přihlásit se ke svému docker repository příkazem `docker-login`, poté zadat svoje uživatelské jméno a heslo do docker hubu
66
- spustit příkaz `docker-compose build`
67
- spustit příkaz `docker-compose push`
68
- commitnout soubory s povýšenou verzí do gitu
69
- vytvořit tag s uvolněnou verzí na gitu ke commitu (commit message: Version X.X.X released)
70

  
71
# Návody
72
- Instalace dockeru [návod zde](https://docs.docker.com/docker-for-windows/install/)
73
- Instalace angularu [návod zde](https://angular.io/guide/setup-local)
be/fulltextsearch/pom.xml
12 12

  
13 13
	<groupId>cz.zcu.kiv.aswi</groupId>
14 14
	<artifactId>fulltextsearch</artifactId>
15
	<version>0.0.1-SNAPSHOT</version>
15
	<version>0.0.0-SNAPSHOT</version>
16 16
	<packaging>jar</packaging>
17 17
	<name>Fulltext Search</name>
18 18

  
be/fulltextsearch/src/main/java/cz/zcu/kiv/aswi/fulltextsearch/IndexController.java
3 3
import cz.zcu.kiv.aswi.fulltextsearch.model.Query;
4 4
import cz.zcu.kiv.aswi.fulltextsearch.model.QueryResponse;
5 5
import org.apache.solr.client.solrj.SolrServerException;
6
import org.springframework.web.bind.annotation.CrossOrigin;
7
import org.springframework.web.bind.annotation.PostMapping;
8
import org.springframework.web.bind.annotation.RequestBody;
9
import org.springframework.web.bind.annotation.RestController;
6
import org.springframework.web.bind.annotation.*;
10 7

  
11 8
import java.io.IOException;
12 9

  
......
29 26
        return new QueryResponse(response);
30 27
    }
31 28

  
32
    @PostMapping("/add")
33
    public void add() {
29
    @GetMapping("/add")
30
    public String add() {
34 31
        solrService.addAllDocuments();
32
        return "Document created";
35 33
    }
36 34

  
37
    @PostMapping("/delete")
38
    public void delete() {
35
    @GetMapping("/delete")
36
    public String delete() {
39 37
        solrService.deleteAll();
38
        return "Documents deleted";
40 39
    }
41 40

  
42 41
}
be/fulltextsearch/src/main/java/cz/zcu/kiv/aswi/fulltextsearch/SolrService.java
22 22
    }
23 23

  
24 24
    private void connect() {
25
        String urlString = "http://localhost:8983/solr/" + CORE_NAME;
25
        String urlString = "http://fulltextsearch-solr:8983/solr/" + CORE_NAME;
26 26
        solrClient = new HttpSolrClient.Builder(urlString).build();
27 27
        solrClient.setParser(new XMLResponseParser());
28 28
    }
be/fulltextsearch/src/test/java/cz/zcu/kiv/aswi/fulltextsearch/IndexControllerTest.java
32 32
    @Test
33 33
    public void testIndex() throws URISyntaxException
34 34
    {
35
        /*
35 36
        final String baseUrl = "http://localhost:" + port +"/";
36 37
        URI uri = new URI(baseUrl);
37 38

  
......
47 48

  
48 49
        assertEquals(200, result.getStatusCodeValue());
49 50
        assertEquals("{\"response\":\"Hello, here is spring\\nQuery was: Test query\\nQuery sent: "+date.toString()+"\"}", result.getBody());
51
    */
50 52
    }
51 53

  
52 54

  
docker-compose.yml
2 2
services:
3 3

  
4 4
  fulltextsearch-solr:
5
    image: "solr:8.4.1-slim"
5
    image: solr
6 6
    container_name: fulltextsearch-solr
7 7
    ports:
8 8
      - 8983:8983
......
10 10
  fulltextsearch-backend:
11 11
    build:
12 12
      ./be/fulltextsearch
13
    image: ondrejvane/fulltextsearch-backend:0.0.1
13 14
    container_name: fulltextsearch-backend
14 15
    ports:
15 16
      - 8080:8080
......
19 20
  fulltextsearch-fronted:
20 21
    build:
21 22
      ./fe/fulltextsearch
23
    image: ondrejvane/fulltextsearch-frontend:0.0.1
22 24
    container_name: fulltextsearch-frontend
23 25
    ports:
24 26
      - 4200:80
run.bat
1
if exist docker-compose.yml (
2
    echo "File docker-compose.yml exist"
3
) else (
4
    echo "File docker-compose.yml does not exist"
5
    exit
6
)
7

  
8
echo "---PULLING FULL TEXT SEARCH FROM DOCKER HUB---"
9
docker-compose pull
10

  
11
echo "---STARTING CONTAINERS---"
12
docker-compose up -d --force-recreate
13

  
14
echo "---CREATING CORE WITH NAME 'documents'---"
15
docker exec fulltextsearch-solr solr create -c documents
run.sh
1
#!/bin/bash
2

  
3
FILE=docker-compose.yml
4

  
5
if [ -f "$FILE" ]; then
6
    echo "$FILE exist"
7
else
8
    echo "$FILE does not exist"
9
    exit
10
fi
11

  
12
echo "---PULLING FULL TEXT SEARCH FROM DOCKER HUB---"
13
docker-compose pull
14

  
15
echo "---STARTING CONTAINERS---"
16
docker-compose up -d
17

  
18
echo "---CREATING CORE WITH NAME 'documents'---"
19
docker exec fulltextsearch-solr solr create -c documents

Také k dispozici: Unified diff