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