Jump to content

Mitwirkende

docker Windows Server Container und Docker III

412 Aufrufe

Dockerfile

Damit man nicht mit jedem Container alles neu machen muss, kann man sich über Dockerfiles eigene Images erzeugen. Die hier gezeigte Version ist mehr oder weniger die finale Version. Davor gab es natürlich diverse Fehlversuche sei es wegen eigener Fehler oder weil man manche Dinge auch einfach nicht vermutet hätte. Unter Windows Nanoserver gibt es beispielsweise gar kein msiexec und das msiexec vom Server Core schreibt die Registryeinträge gar nicht oder irgendwohin wo sie später nicht gefunden werden. Mit setx kann man zwar globale Umgebungsvariablen setzen, startet man den Apache aber als Dienst, wird die Pfadeinstellung dennoch nicht genutzt.

# Wir benutzen unser schon gepulltes Windows Servercore Image
FROM servercore:ltsc2019
COPY install /install
# Installiert die ODBC Treiber im Image
# Wer hier eine Ausgabe zum Debuggen will kann noch "/l! out13.log" anhängen
RUN ["msiexec", "/a C:\\install\\msodbcsql_13.msi", "/qn"]
RUN ["msiexec", "/a C:\\install\\msodbcsql_17.msi", "/qn"]
# Installation von VC Redist - 15 wird bei Server 2019 nicht benötigt
RUN ["C:\\install\\vc_17.exe", "/quiet", "/install"]
RUN ["C:\\install\\vc_13.exe", "/quiet", "/install"]
# Die Registry-Datei für die ODBC Treiber importieren
RUN "reg import C:\\install\\odbc.reg"
# install brauchen wir nicht mehr
RUN "RMDIR /S /Q C:\\install"
# /instantclient entspricht dann C:\instantclient im Image
COPY instantclient /instantclient
# einfach großartig - wenn jemand eine Idee hat wie ich Apache als Service erklären kann wo der instantclient liegt ...
ENV PATH="C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\ContainerAdministrator\AppData\Local\Microsoft\WindowsApps;C:\instantclient"
# Apache usw. kopieren - *1
COPY webapp /webapp
WORKDIR /webapp
# wir möchten mit dem Container reden
EXPOSE 80
# kopieren von php und der php.conf ins Apache config Verzeichnis - *2
COPY php/php /webapp/php
COPY php/php.conf /webapp/Apache24/conf/extra
# zum Testen/Debuggen
#ENTRYPOINT ["cmd.exe"]
# und los geht’s
ENTRYPOINT ["C:\\webapp\\Apache24\\bin\\httpd.exe"]

Das Dockerfile kommt dann mit in das Build-Verzeichnis und das neue Image kann mit folgendem Befehl erzeugt werden.

PS E:\build\>docker build -t test .

Mit

PS E:\build\>docker run -it -p 80:80 --name test_container test

starten wir den Container und prüfen das alles wie gewünscht funktioniert. Ist das der Fall teilen wir das Dockerfile in 3 Dateien. Das Dockerfile wird dann bei *1 und *2 aufgeteilt. Der erste Teil bleibt wie er ist und wir nennen das Dockerfile core2019. Und bauen ein Image daraus.

PS E:\build\>docker image build -t core2019 -f .\core2019 .

Das zweite Dockerfile sieht dann so aus

FROM core2019:latest
COPY webapp /webapp
EXPOSE 80

und das dritte so

FROM apache_core2019:latest
COPY php/php /webapp/php
COPY php/php.conf /webapp/Apache24/conf/extra
WORKDIR /logodata
ENTRYPOINT ["C:\\webapp\\Apache24\\bin\\httpd.exe"]


Ich habe die Dockerfiles nach dem Image benannt das sie erzeugen. Die weiteren Images baue ich also mit

PS E:\build\>docker image build -t apache_core2019 -f .\apache_core2019 .
PS E:\build\>docker image build -t php_apache_core2019 -f .\php_apache_core2019 .

Damit hat man zwar etwas Overhead bei jedem Build, da jedesmal das komplette Verzeichnis zum Buildprozess übergeben wird. Allerdings können wir so sehr einfach andere PHP und/oder Apache Versionen in ein anderes Image packen ohne den Standard zu verlieren oder die grundlegende Installation wiederholen zu müssen.

Lauf Docker, Lauf!

Die entstandenen Images kann man nun wieder mit kürzeren Namen taggen und schließlich starten

PS> docker run --restart unless-stopped -d --name flamara -p 17000:80 -v E:\share\develop:C:\webapp\docroot -v E:\share\config:C:\webapp\docroot\config\ --dns=10.0.0.20 php2019:latest

Mit -p mappen wir einen Port des Hosts zu dem freigegebenen Port des Containers. Dann mappen wir mit -v zum einen die Webapplikation selbst ins docroot des Containers und auch die Konfiguration der Software.

So können wir beliebige Versionen der Software mit der gleichen Konfiguration (Benutzer, Rechte, Datenbankanbindung) in der gleichen Umgebung testen.

Die nächsten Schritte wären nun, das Ganze mit einem Linux Base-Image zur erstellen und danach automatisierte Builds.



0 Kommentare


Empfohlene Kommentare

Keine Kommentare vorhanden

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Kommentar schreiben...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

  • Blogkommentare

    • Hatte 1 Jahr 11 Monate (Bin allerdings paar Tage älter und es war eine Umschulung), hatte in der Schriftlichen Blackout aber dafür in der mündlichen 1 also fast wie bei Dir nur umgekehrt , aber eigentlich wollte ich nur Danke sagen! Hatte vorhin einen anderen Thread hier am Wickel und du hast mir ein wenig Zweifel genommen mit deiner Einstellung und Engagemant! Genau das macht den Fachinformatiker u.a. aus!
    • such doch lieber nach einem Trainee Job oder Junior Developer. In der nähe Dortmund oder Düsseldorf gibt es massig Firmen die sowieso jeden Mitarbeiter erstmal 6 Monate in ein Internes Schulungszentrum schicken, damit alle mit dem selben Grundwissen in die Projekte einsteigen. Eine Ausbildung ist wie RubberDog schon sagt ein weiter schritt zurück für dich. In einer Ausbildung kommst du noch nichtmal auf 10 Prozent des Wissens deines B.Sc. Das sind weggeschmissene zwei bis drei Jahre. Und mit def
    • Die Praxis fehlt jedem Studenten, der frisch aus der Uni kommt. Mit der Ausbildung machst du eher einen Rückschritt. Aber wenn die Ausbildung ist, was du möchtest - sieh' zu, dass du sie ordentlich verkürzen kannst.
    • @Listener danke dir! Ich habe schon mein Bachelor in Deutschland anerkenengelassen und das Sprachezertifikat B2 bekommen. Ich habe in Universität IT studiert und fehlt mir die Praxis. Deswegen ich die Enscheidung für eine Ausbildung getroffen.
    • @skathar Bei großen Arbeitgebern wirst du mit abgeschlossenem Informatikstudium auch Chancen haben. Oftmals werden dann sogar die Deutschkurse bezahlt. Eine Ausbildung halte ich hier nicht für wirklich zielführend. Wenn du der englischen Sprache mächtig bist und in der Informatik fit bist, klappt das auch ohne Ausbildung.
    • Also, ich habe Bachelor of Science (B.Sc.) in Informatik in Griechenland absolviert.  Danke für eure Antworten! Ich muss schnell bei IHK fragen! 😉
    • Heimatland = welches Land? Wird der Bachelor in Deutschland nicht anerkannt?  Um auf die minimal mögliche Zeit zu kommen, muss man die Verkürzung um 1 Jahr afaik bereits vor Beginn der Ausbildung bei der für dich zuständigen IHK beantragen (lassen) (it Einverständnis der Firma), da man in der Berufsschule dann direkt ins zweite Lehrjahr einsteigt. Dafür sollte man aber auch entsprechendes IT-Grundwissen haben und ich meine man benötigt als Abschluß das Abitur. Wie das mit ausländischen Sc
    • Ist der B.Sc. nicht International vergleichbar (deswegen ist das Diplom ja weg) und sollte daher hier anerkannt werden?   Material der Berufsschule und alte Prüfungen durcharbeiten. Maximal auf 18 Monate. Wenn du aber schon 6 Monate im ersten Jahr dabei bist, solltest du nicht mehr als auf 2 Jahre verkürzen, sonst musst du doch erstaunlich viel aus der Schule vorarbeiten.   Die Fristen sind meines Wissens unterschiedlich. Einfach mal bei deiner IHK anrufen und nachfr
    • Ich interessiere mich auch für die Ausbildungsverkürzung, weil ich schon in meinem Heimatland studiert habe. Aber ich denke, wenn ich wegen der deutsche Sprache nicht es schaffe, was kann ich weitermachen. Trotzdem, stelle ich meine Fragen 😂 Also, ich habe mit meiner Ausbildung vor 6 Monaten angefangen und ich habe Bachelor in IT-Bereich. Wie könnte ich am besten für die Prüfungen vorbereiten? Wie lange kann ich meine Ausbildung verkürzen? Wie früher muss man den
    • Das ist natürlich ein Beispiel, welches ich mir für den Blog wünsche. Ich hoffe du bleibst noch weiter am Ball und erzählst uns, von deiner bestandenen Abschluss Prüfung. Ich drücke dir auf jeden Fall beide Daumen. Der Vorteil an einer Umschulung ist, das du 8 Std jeden Tag im Fluss des Wissens bist. In einer normalen Ausbildung hast du die Berufsschule, die meistens veraltete Techniken beibringt. Unsere Dozenten haben noch nebenbei ihre Firmen am laufen und wir haben alle Themen in Bl
  • Blogstatistik

    • Blogs insgesamt
      1
    • Einträge insgesamt
      34

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung