E-deklaracje w dockerze

Sezon rozliczeniowy już prawie dobiega końca zatem ostatni to już ostatni moment aby rozliczyć się z fiskusem i przekazać 1% na organizację pożytku publicznego 🙂

 

Przy moim rozliczeniu pojawiła się kolejna niemiła niespodzianka tj. przestał działać acrobat reader, który jest wymagany przez e-deklaracje do otwarcia i wypełnienia formularza. Problem się pojawił tuż po sporej ilości aktualizacji na Archu, w tym aktualizacji Gnoma do wersji 3.28. Nie udało mi się tego naprawić :/

 

W związku z powyższym zaświtała mi myśl aby użyć bardzo popularnej ostatnio technologii dockera i stworzyć obraz (image), który będzie zawierał e-deklaracje, adobe reader oraz adobe air, a następnie uruchomić obraz w kontenerze. O dziwo wszystko zadziałało. Obraz, który stworzyłem działa na starej wersji Ubuntu 14.04, na której dało się jeszcze zainstalować wszystkie paczki wraz z zależnościami, całość oparta jest na podstawie moich archiwalnych notek. Zaletą tego rozwiązania jest, że wszystko ściągamy z oryginalnych źródeł, a tym samym nie łamiemy licencji Adobe…

 

Jak zainstalować dockera?

Korzystałem z wiki archowego https://wiki.archlinux.org/index.php/Docker i instalacja ograniczała się do instalacji jednego pakietu oraz zmiany jednego ustawienia. Jak sadzę podobnie to wygląda dla pozostałych dystrybucji.

 

1) instalacja głównego pakietu

sudo pacman -S docker

 

1a) W przypadku Ubuntu 17.10 najłatwiej skorzystać z gotowej paczki: https://download.docker.com/linux/ubuntu/dists/artful/pool/stable/amd64/docker-ce_18.03.0~ce-0~ubuntu_amd64.deb

 

sudo dpkg -i docker-ce_18.03.0~ce-0~ubuntu_amd64.deb

 

2) Zanim uruchomimy usługę warto zmienić jedno ustawienie odpowiedzialne za lokalizację przetrzymywanych plików obrazów i kontenerów dockera. Domyślnie jest to  /var/lib/docker czyli na ogół partycja root.

 

Stopujemy usługę dockera (jeśli jest uruchomiona) i tworzymy plik /etc/systemd/system/docker.service.d/docker-storage.conf (wcześniej trzeba utworzyć brakujący katalog), a w pliku dodać:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --data-root=/sciezka/zplikami/docker -H fd://

 

3) Uruchamiamy dockera

sudo systemctl start docker

Możemy również włączyć automatyczne uruchamianie przy starcie

sudo systemctl enable docker

 

4) Ostatni krok to dodanie się do lokalnej grupy docker i przelogowanie się abyśmy mogli uruchamiać dockera bez roota.

sudo usermod -a -G docker nazwauzytkownika

 

Teraz możemy ściągać gotowy obraz ze strony dockera lub skorzystać z pliku konfiguracyjnego Dockerfile, który jest niedużym skryptem, w którym kolejno wypisane są kroki instalacyjne.

Mój plik Dockerfile znajduje się na moim githubie (https://github.com/eproxy/e-deklaracje-docker/blob/master/Dockerfile) i wystarczy go ściągnąć (git clone https://github.com/eproxy/e-deklaracje-docker.git) , a następnie  uruchomić w dockerze. Uruchomienie go w dockerze spowoduje utworzenie obrazu zgodnie ze specyfikacją w pliku. Zbudowany obraz wystarczy uruchomić i wypełnić pit :>

 

Kilka słów jeszcze o samy pliku Dockerfile. Jak widać korzystamy z mikroobrazu ubuntu 14.04.03, który jest ściągany z oficjalnego repozytorium Dockera, wszystkie inne kroki to już zwykłe kroki instalacyjne jakie wykonywalibyśmy interaktywnie czyli: włączenie obsługi pakietów 32 bit, instalacja zależności do readera, pobranie readera i AIR SDK ze strony Adobe, rozpakowanie i instalacja,  ściągnięcie nakładki adobe air dla AIR SDK, na samym końcu ściągniecie ostatniej wersji e-deklaracji po czym jej uruchomienie.

 

Zakładając, że ściągnęliśmy plik Dockerfile, przechodzimy do jego katalogu i uruchamiamy komendę budowy obrazu na podstawie pliku.

 

docker build -t e-deklaracje .

 

Postęp instalacji można obserwować na terminalu, a całość powinna zająć kilka minut.

Teraz wystarczy uruchomić nasz zbudowany obraz, ale zanim to zrobimy to należy na czas trwania sesji zezwolić na łączenie się do naszego X serwera gdyż e-deklaracje jest programem graficznym i to jeszcze uruchamianym w kontenerze więc jakoś musimy go wyświetlić:

xhost +local:docker

 

Komenda do uruchomienia zawiera w sobie podmontowanie katalogu z konfiguracją e-deklaracji trzymaną lokalnie tak więc przed uruchomieniem należy zrobić kopię zapasową e-deklaracji!. Należy pamiętać rownież, że wszystkie ustawienia jakie byśmy zrobili w naszym uruchomionym kontenerze znikną po jego ponownym uruchomieniu. Dlatego właśnie dodajemy nasz lokalny zasób aby e-deklaracje mogły gdzieś zapisać swoje ustawienia.

 

Przedostatnia linijka to właśnie podmontowanie katalogu $HOME/.appdata w trybie RW, który będzie widoczny w kontenerze w lokalizacji: /home/uzytkownik/.appdata (uzytkownik to nazwa loginu w dockerze, nic tu nie zmieniamy)

 

Jeśli na lokalnym komputerze nie instalowaliśmy wcześnie e-deklaracji to trzeba utworzyć przed uruchomieniem katalog .appdata

mkdir $HOME/.appdata

 

Ostatnia linijka to nazwa naszego zbudowanego obrazu.

 

docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.appdata/:/home/uzytkownik/.appdata:rw \
e-deklaracje

 

 

3 komentarze

    • Mirek, 14 kwietnia 2018, 02:10

    Odpowiedz

    Super, że ciągniesz dalej temat.
    Faktycznie przydało by się zrobić jakąś prostą automatyzacje.

    • Stary Wk..., 18 kwietnia 2018, 22:22

    Odpowiedz

    A e-pity też nie działały? Jak masz więcej miejsc pracy to chyba lepsze rozwiązanie.

    1. Nocny Pingwin

      Odpowiedz

      Jeśli masz dochód z więcej niż jednego miejsca pracy to i tak rozliczasz jedne formularz (na ogół). Epitów nie testowałem, mam ograniczone zaufanie do zamkniętych, „bezpłatnych” usług z nieznanym modelem biznesowym przy pomocy których podajesz mnóstwo swoich danych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.