window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster już istnieje') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() JAK NAUCZYĆ SIĘ DOCKERA - The Codest
The Codest
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Branże
    • Fintech i bankowość
    • E-commerce
    • Adtech
    • Healthtech
    • Produkcja
    • Logistyka
    • Motoryzacja
    • IOT
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
Strzałka w tył WSTECZ
2018-09-09
Software Development

LEKCJA JAK KORZYSTAĆ Z DOCKERA

Dawid Polchlopek

Odkąd zauważyłem, że przygotowywana przez nas aplikacja znacznie się rozrosła, postanowiłem znaleźć zupełnie nową metodę automatyzacji procesu jej uruchamiania. Ważne było dla mnie znalezienie rozwiązania, które umożliwiłoby aktywację nowych funkcji w oderwaniu od innych.

Wprowadzenie

Odkrycie prostszej metody automatyzacji procesów byłoby znaczącym usprawnieniem zarówno mojej pracy, jak i pracy całego mojego zespołu. zespół. Pomyślałem: "Dlaczego nie użyć Dockera?".

Podczas etapu przygotowawczego stworzyłem dwie konfiguracje: jedną dla aplikacji front-end, a drugą dla API. Poniżej możesz zobaczyć prezentację tego, czego nauczyłem się podczas procesu rozwoju.

Pierwszy problem

Chcę mieć sklonowane repozytorium w kontenerze, więc dodałem klucz ssh za pomocą polecenia ADD w pliku Dockerfile:

ADD ~/.ssh/testowy

I bam! Plik nie został znaleziony. Dlaczego?

Załóżmy, że mamy następującą strukturę folderów:

docker/
|-- stuff/
| test.txt
|-- Dockerfile
server/
|-- Dane
| setup.yml

Uruchom polecenie budować w login-queue i można dodawać tylko pliki z folderu lokalnego i jego lokalnych podfolderów, np. rzeczy.

Jeśli chcesz dodać serwer otrzymasz komunikat: "nie można przygotować kontekstu".

Dockerignore

Zastanawiałeś się kiedyś, dlaczego tworzenie obrazu trwa tak długo? Może nie użyłeś .dockerignoreaby zignorować pliki, które nie są potrzebne w obrazie. Plik .git powinien zostać usunięty automatycznie, podobnie jak wszystkie pliki tymczasowe.

Kolejność poleceń w pliku Dockerfile

Docker zapisuje każdą linię w pliku Dockerfile, a po zbudowaniu każda linia jest zapisywana jako warstwa. Bardzo ważne jest, aby nie zmieniać kolejności poszczególnych poleceń zbyt często.

Z ubuntu
RUN apt-get install -y software-properties-common pyton
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ precise universe" >> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nodejs
RUN apt-get install -y nodejs=0.6.12~dfsg1-1ubuntu1
RUN mkdir /var/www

ADD app.js /var/www/app.js

CMD ["/usr/bin/node", "/var/www/app.js"]

Na przykład, jeśli zmienisz ostatnią linię w pliku Dockerfile, wszystkie poprzednie linie zostaną pobrane z pamięci podręcznej, podczas gdy ostatnia linia zostanie zmodyfikowana. W przypadku podmiany linii nr 4, zmodyfikowane zostaną wszystkie linie począwszy od linii 4 do końca. Z tego powodu warto umieszczać komendy, które nie będą się zmieniać, na początku pliku.

Kopiowanie plików do obrazu

Warto zastanowić się, do czego dany obraz będzie używany. Jeśli potrzebujesz go do jednorazowego uruchomienia usługi, po prostu skopiuj plik kod bezpośrednio do obrazu:

COPY . /workdir

Niestety, uniemożliwia to edycję plików i za każdym razem, gdy chcesz edytować kod, musisz ponownie zbudować obraz.

Jeśli korzystasz z macOS i chcesz wykorzystać zbudowany obraz do rozwoju, musisz podejść do tej kwestii w nieco inny sposób. Jeśli będziemy korzystać z wolumenów to musimy być przygotowani, że jest to rozwiązanie ekstremalnie wolne (np. kopiowanie pliku z hosta do kontenera odbywa się z prędkością 4,5 MB/s, podczas gdy kopiowanie wewnątrz kontenera z prędkością 10-20x większą). Na szczęście, jak widać na linkProblem jest znany, a jego rozwiązanie jest kluczową kwestią dla zespołu odpowiedzialnego za rozwój Dockera dla komputerów Mac.

Jak w takiej sytuacji można wykorzystać platformę Docker do programowania?

Można go użyć do zewnętrznych usług, np. Redis/PSQL/Elasticsearch lub skorzystać z gotowych rozwiązań, które oferują rsync: https://github.com/brikis98/docker-osx-dev

Podsumowując

Jeśli masz duży zespół i chcesz przetestować nową funkcję, docker będzie idealnym narzędziem! Niemniej jednak, czy użyłbym go do produkcyjnego uruchomienia serwera? Nie jestem jeszcze do końca przekonany...

Dodatkowo polecam kilka wyróżniających się artykułów:

  • Jak testować obrazy
  • coś jeszcze o Dockerze, ale również warte wspomnienia
  • Wreszcie, dokumentacja Docker

Powiązane artykuły

Software Development

Tworzenie przyszłościowych aplikacji internetowych: spostrzeżenia zespołu ekspertów The Codest

Odkryj, w jaki sposób The Codest wyróżnia się w tworzeniu skalowalnych, interaktywnych aplikacji internetowych przy użyciu najnowocześniejszych technologii, zapewniając płynne doświadczenia użytkowników na wszystkich platformach. Dowiedz się, w jaki sposób nasza wiedza napędza transformację cyfrową i biznes...

THEECODEST
Software Development

10 najlepszych firm tworzących oprogramowanie na Łotwie

Dowiedz się więcej o najlepszych łotewskich firmach programistycznych i ich innowacyjnych rozwiązaniach w naszym najnowszym artykule. Odkryj, w jaki sposób ci liderzy technologiczni mogą pomóc w rozwoju Twojej firmy.

thecodest
Rozwiązania dla przedsiębiorstw i scaleupów

Podstawy tworzenia oprogramowania Java: Przewodnik po skutecznym outsourcingu

Zapoznaj się z tym niezbędnym przewodnikiem na temat skutecznego tworzenia oprogramowania Java outsourcing, aby zwiększyć wydajność, uzyskać dostęp do wiedzy specjalistycznej i osiągnąć sukces projektu z The Codest.

thecodest
Software Development

Kompletny przewodnik po outsourcingu w Polsce

Wzrost liczby outsourcing w Polsce jest napędzany przez postęp gospodarczy, edukacyjny i technologiczny, sprzyjający rozwojowi IT i przyjazny klimat dla biznesu.

TheCodest
Rozwiązania dla przedsiębiorstw i scaleupów

Kompletny przewodnik po narzędziach i technikach audytu IT

Audyty IT zapewniają bezpieczne, wydajne i zgodne z przepisami systemy. Dowiedz się więcej o ich znaczeniu, czytając cały artykuł.

The Codest
Jakub Jakubowicz CTO & Współzałożyciel

Subskrybuj naszą bazę wiedzy i bądź na bieżąco!

    O nas

    The Codest - Międzynarodowa firma programistyczna z centrami technologicznymi w Polsce.

    Wielka Brytania - siedziba główna

    • Office 303B, 182-184 High Street North E6 2JA
      Londyn, Anglia

    Polska - lokalne centra technologiczne

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polska

      The Codest

    • Strona główna
    • O nas
    • Nasze Usługi
    • Case Studies
    • Nasze Know How
    • Kariera
    • Słownik

      Nasze Usługi

    • Konsultacje IT
    • Software Development
    • Backend Development
    • Frontend Development
    • Zespoły IT
    • Backend Dev
    • Inżynierowie rozwiązań chmurowych
    • Inżynierowie danych
    • Inne
    • Inżynierowie QA

      Raporty

    • Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym
    • Z USA do Europy: Dlaczego amerykańskie startupy decydują się na relokację do Europy?
    • Porównanie centrów rozwoju Tech Offshore: Tech Offshore Europa (Polska), ASEAN (Filipiny), Eurazja (Turcja)
    • Jakie są największe wyzwania CTO i CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Warunki korzystania z witryny

    Copyright © 2025 by The Codest. Wszelkie prawa zastrzeżone.

    pl_PLPolish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek pl_PLPolish