Commit d8f3f47a authored by Indrek Jentson's avatar Indrek Jentson

Muudetud konfiguratsiooni vastavaks docker-compose vajadustele

Signed-off-by: Indrek Jentson's avatarIndrek Jentson <indrek.jentson@ut.ee>
parent 5bd9e8d2
.project .project
.pydevproject .pydevproject
.idea/
*.iml
# DOCKERi skript # DOCKERi skript Tokenizeri ehitamiseks
# OMA TEENUSE ettevalmistamisel asenda nii käesolevas failis kui ka failis README.MD string 'kl_teenus' sobiva nimega,
# näiteks sõnade loendaja 'wc' korral 'kl_wc'.
# Nimed 'github.com' ja 'username' tuleb asendada vastavalt kasutatavale GIT repositooriumile.
#
# DOCKERi paigaldamiseks ja käivitamiseks:
# cd /soovitud/asukoht/oma/teenuse/koodile/serveris
# wget https://github.com/username/kl_teenus/raw/master/Dockerfile
# docker build -t kl_teenus .
# docker run --name kl_redis --rm --restart=no redis
# docker run --name kl_teenus -d --link kl_redis:redis -p 3003:3003 -v /etc/wrapper/teenus/:/config kl_teenus
#
# DOCKERi seiskamiseks:
# docker kill kl_teenus
# docker rm kl_teenus
#
FROM debian:jessie FROM debian:jessie
# Kui Debianil pole vaikimisi kaasas GCC vajalikke teeke vms, siis tuleb need ka lasta installida. # Kui Debianil pole vaikimisi kaasas GCC vajalikke teeke vms, siis tuleb need ka lasta installida.
RUN apt-get update && \ RUN apt-get update && \
apt-get -y install curl sudo && \ apt-get -y install curl sudo gnupg apt-utils && \
curl -sL https://deb.nodesource.com/setup | sudo bash - && \ curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - && \
apt-get -y install build-essential nodejs wget && \ apt-get -y install build-essential nodejs wget && \
apt-get -y install g++ python3-dev python-dev libpython3-dev libpython-dev python3-pip python3-wheel python3-numpy swig && \ apt-get -y install git && echo "Installed 1"
RUN npm install -g forever
RUN apt-get -y install g++ python3-dev python-dev libpython3-dev libpython-dev python3-pip python3-wheel python3-numpy swig && \
apt-get -y install git && echo "Installed 2" apt-get -y install git && echo "Installed 2"
# Tagame värskeima PIPi olemasolu # Tagame värskeima PIPi olemasolu
...@@ -32,29 +21,26 @@ RUN wget https://bootstrap.pypa.io/get-pip.py && \ ...@@ -32,29 +21,26 @@ RUN wget https://bootstrap.pypa.io/get-pip.py && \
python get-pip.py && \ python get-pip.py && \
pip install -U pip pip install -U pip
RUN npm install -g forever
# Valmistame ette koodi, mida me DOCKERis kasutama hakkame. Siinkohal peaks plaanima, et mis failid kus kataloogis peaks olema # Valmistame ette koodi, mida me DOCKERis kasutama hakkame. Siinkohal peaks plaanima, et mis failid kus kataloogis peaks olema
RUN mkdir -p /wrapper && mkdir -p /config && mkdir -p /wrapper/files && mkdir -p /wrapper/tmp && mkdir -p /wrapper/logs && \ RUN git clone 'https://gitlab.keeleressursid.ee/keeleliin/keeleliin-wrapper.git' --single-branch wrapper && \
cd /wrapper && \ mkdir -p /config && mkdir -p /wrapper/files && mkdir -p /wrapper/tmp && mkdir -p /wrapper/logs && \
git clone 'git@gitlab.keeleressursid.ee:keeleliin/keeleliin-wrapper.git' && \ cd wrapper && npm install && \
mv keeleliin-wrapper/* . && \ echo "NPM is installed"
mv keeleliin-wrapper/.g* . && \
npm install && \ # Määratleme aktiivse töökataloogi
echo "NPM is installed"
WORKDIR /wrapper
# SIIA ALLA lisa kõik installeerimise käsud, mis on vajalikud sisulist tööd tegeva tarkvara X paigaldamiseks. # SIIA ALLA lisa kõik installeerimise käsud, mis on vajalikud sisulist tööd tegeva tarkvara X paigaldamiseks.
# Tarkvara X paigaldamine algab # Tarkvara X paigaldamine algab
RUN cd /wrapper && \ COPY config_dist.js /wrapper/config.js
git clone 'https://gitlab.keeleressursid.ee/keeleliin/py_tokenizer.git' && \ COPY tokenizer.py /wrapper
cp py_tokenizer/config_dist.js . && \
cp py_tokenizer/tokenizer.py .
# tokenizer.py jaoks on vajalik estnltk teek # tokenizer.py jaoks on vajalik estnltk teek
RUN pip install estnltk RUN pip install estnltk==1.4.1.1
# Tarkvara X paigaldamine lõppeb # Tarkvara X paigaldamine lõppeb
...@@ -63,5 +49,7 @@ EXPOSE 3003 ...@@ -63,5 +49,7 @@ EXPOSE 3003
VOLUME ["/config"] VOLUME ["/config"]
VOLUME ["/wrapper/logs"] VOLUME ["/wrapper/logs"]
VOLUME ["/wrapper/files"]
VOLUME ["/wrapper/tmp"]
CMD cd /wrapper && ./docker_start.sh CMD /wrapper/docker_start.sh
## Projekti käivitamise ettevalmistamine dockeriga (Linuxis) # Teenus KL-PY-Tokenizer
* NB! kl_teenus asemel kasuta alljärgnevalt oma teenuse nimetust!
* Tee käesolevast projektist enda GIT-is koopia. Käesolev teenus kasutab teeki ESTNLTK ja tagastab etteantava tekstifaili kohta
* Tutvu saadaoleva dokumentatsiooniga ja tee oma uue projekti failidesse vajalikud muudatused. Tavaliselt on vaja muuta faile faili, milles ...
## Komponendi docker-compose'ga kasutamise ettevalmistamine (Linuxis)
* Eeldame, et serveris on juba olemas järgmised projektid:
* https://gitlab.keeleressursid.ee/keeleliin/keeleliin-master.git
* https://gitlab.keeleressursid.ee/keeleliin/server.git
* https://gitlab.keeleressursid.ee/keeleliin/klient.git
* Tee käesolevast projektist enda serveri kettale kloon:
```
$ git clone https://gitlab.keeleressursid.ee/keeleliin/kl-wc.git
```
* Tutvu saadaoleva dokumentatsiooniga ja kui vaja, siis tee projekti failidesse vajalikud muudatused. Tavaliselt on vaja muuta faile
* config_dist.js * config_dist.js
* Dockerfile * Dockerfile
* README.MD
* Salvesta tehtud muudatused * Salvesta tehtud muudatused
* git commit -a
* git push
## Püüa loodud projekti paigaldada
* Kui su serveris veel pole Dockerit, siis paigalda see: http://docs.docker.com/engine/installation/
* KÄIVITA REDIS SERVER:
``` ```
$ docker run --name kl_redis -d redis $ git commit -a
``` ```
* Lae alla oma teenuse Dockerfile * Täienda konfiguratsioonifaili keeleliin-master/docker-compose.yml vastavalt failis keeleliin-master/README.MD kirjapandud juhistele.
* wget https://github.com/username/kl_teenus/raw/master/Dockerfile Näiteks antud teenuse nimeks konfiguratsioonis on wordcount.
* Muuda allalaetud faili vastavalt vajadusele. Näiteks muuda #Expose port parameetrit vastavalt sellele, millisel pordil hakkab loodud teenus töötama. Jälgi, et config.js-is kirjeldatud teenuse port, Dockerfile #Expose port ja docker-compose.yml'is olev service.wordcount.port oleksid sama väärtusega.
* Loo dockeri Image fail (kl_teenus - Image nimi): * Valmista ette teenuse konteineri image:
``` ```
$ docker build -t kl_teenus . $ cd keeleliin-master
$ docker-compose build wordcount
``` ```
* Loo teenuse seadistuste faili ja muude failide jaoks dockerivälised kaustad: * Kui keeleliini rakendus juba töötab, siis käivita uue teenuse konteiner nii:
``` ```
$ cd /srv $ docker-compose up -d wordcount
$ mkdir -p keeleliin-teenus
$ mkdir -p keeleliin-teenus/config
$ mkdir -p keeleliin-teenus/wrapper
$ mkdir -p keeleliin-teenus/wrapper/files
$ mkdir -p keeleliin-teenus/wrapper/logs
``` ```
* Käivita loodud kl_teenus: * Kui keeleliini rakendus veel ei tööta, siis kogu rakendust korraga käivitakse nii:
``` ```
$ docker run --name kl_teenus -d --link kl_redis:redis -p 3000:3000 -v /srv/keeleliin-teenus/config:/config -v /srv/keeleliin-teenus/wrapper/files:/wrapper/files -v /srv/keeleliin-teenus/wrapper/logs:/wrapper/logs kl_teenus $ docker-compose up -d
``` ```
* Muuda vajaduse korral teenuse seadistusi failis /srv/keeleliin-teenus/config/config.js. Jälgi, et config.js-is kirjeldatud teenuse port ja Dockerfile #Expose port oleksid sama väärtusega. * Uue teenuse funktsioneerimist saab kontrollida, kui pöörduda veebilehitsejaga serveri teenusele määratud pordi poole. Kui serveri nimeks on 'kl-host' ja
* Soovi korral saab konteineris teha toiminguid, aga eeldatavasti ei ole vaja midagi täiendavat teha: teenuse pordiks näiteks 3006, siis peaks näha olema infot järgmistel lehtedel:
* http://kl-host:3006/
* http://kl-host:3006/api/v1/check
* http://kl-host:3006/api/v1/statistics
* http://kl-host:3006/api/v1/service/install
* Soovi korral saab teenuse konteineris teha toiminguid, aga eeldatavasti ei ole vaja midagi täiendavat teha:
``` ```
$ docker exec -it kl_teenus bash $ docker-compose exec wordcount bash
``` ```
* Konteinerist saab väljuda käsuga: Ctrl+P Ctrl+Q * Keeleliini üksiku teenuse (või kogu rakenduse) saab seisma panna nii:
* Kui muutsid midagi, siis uuenda teenust:
``` ```
$ docker exec kl_teenus /wrapper/docker_update.sh $ docker-compose down wordcount
$ docker-compose down
``` ```
var config = require('./global_config/global'); var config = require('./global_config/global');
/* /*
* Teenuse url ilma pordita. Kasutatakse teenuse serverisse installeerimisel teenuse urli moodustamiseks: <url>:<port>/api/v1/ * Teenuse komponendi ja serveri urlid ilma pordita.
* Kasutatakse teenuse serverisse installeerimisel teenuse urli moodustamiseks: <config.serviceUrl>:<config.wrapper.port>/api/v1/
*/ */
config.serverUrl = 'http://localhost'; config.serviceUrl = 'http://tokenizer';
config.serverUrl = 'http://server';
/* /*
* Redis serveri andmed. Kui kasutatakse vaikeseadeid, siis pole vaja muuta * Redis serveri andmed. Kui kasutatakse vaikeseadeid, siis pole vaja muuta
*/ */
config.redis = { config.redis = {
host: process.env.REDIS_PORT_6379_TCP_ADDR || "127.0.0.1", host: 'redis',
port: process.env.REDIS_PORT_6379_TCP_PORT || 6379 port: 6379
}; };
/* /*
...@@ -18,7 +20,7 @@ config.redis = { ...@@ -18,7 +20,7 @@ config.redis = {
*/ */
config.integration = [ config.integration = [
{ {
installUrl: 'http://keeleliin.keeleressursid.ee:3000/api/v1/service/install', installUrl: 'http://server:3000/api/v1/service/install',
apiKey: 'server-wrapper-api-key' apiKey: 'server-wrapper-api-key'
} }
]; ];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment