{"id":4108,"date":"2020-02-26T16:53:07","date_gmt":"2020-02-26T15:53:07","guid":{"rendered":"https:\/\/www.yourwebhoster.eu\/?p=4108"},"modified":"2022-07-22T14:21:26","modified_gmt":"2022-07-22T12:21:26","slug":"hoe-docker-compose-cross-platform-maken-mac-windows-linux","status":"publish","type":"post","link":"https:\/\/www.yourwebhoster.eu\/nl\/2020\/02\/26\/hoe-docker-compose-cross-platform-maken-mac-windows-linux\/","title":{"rendered":"Hoe docker-compose cross-platform maken (Mac, Windows, Linux)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"4108\" class=\"elementor elementor-4108\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6296f67 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6296f67\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3b656299\" data-id=\"3b656299\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5c8d2981 elementor-widget elementor-widget-text-editor\" data-id=\"5c8d2981\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Docker is een cross-platform tool, maar in de praktijk blijkt dezelfde docker-compose configuratie niet vlekkeloos op zowel MacOS, Windows als Linux te werken. In deze blog leg ik uit hoe je er voor kan zorgen dat je docker-composer configuratie cross-platform te gebruiken is.<\/p>\n<p>De bestanden voor deze blog (inclusief docker-compose.yml) is cross-platform te gebruiken en is gehost op&nbsp;<a href=\"https:\/\/github.com\/Yourwebhostereu\/202002-docker-compose-crossplatform\" target=\"_blank\" rel=\"noopener\">Github<\/a>.<\/p>\n<h2 class=\"fusion-responsive-typography-calculated\" data-fontsize=\"38\" data-lineheight=\"49.4px\">Docker-compose op MacOS<\/h2>\n<p>Ik maak zelf gebruik van Docker containers op MacOS. Hoewel het zeker uitdagingen heeft (waaronder performance problemen), werkt het goed. Er zijn geen toegangsfouten of permissie aanpassingen nodig om de normale Docker installatie te gebruiken. Goed om te weten: op&nbsp;<a href=\"https:\/\/docs.docker.com\/docker-for-mac\/docker-toolbox\/\" target=\"_blank\" rel=\"noopener\">MacOS gebruiker Docker Hyperkit<\/a>&nbsp;om een virtuele Linux machine te draaien. Docker draait binnen deze virtuele machine.<\/p>\n<h2>Docker-compose op Windows<\/h2>\n<p>Als je Docker Desktop gebruikt (zonder Windows container), dan zal je waarschijnlijk geen fouten tegenkomen. \u00c9\u00e9n van onze klanten gebruikt een oude Windows 7 installatie (welke EOL is) en heeft Docker Toolbox. Voor Docker Desktop heb je Windows 10 of later nodig. De reden waarom ik dit noem is omdat Docker Toolbox soms fouten heeft met het delen van de volumes. Als je een oudere Windows versie hebt, dan is het aan te raden om je installatie te updaten.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8bfbdb4 elementor-alert-info elementor-widget elementor-widget-alert\" data-id=\"8bfbdb4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"alert.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-alert\" role=\"alert\">\n\n\t\t\t\t\t\t<span class=\"elementor-alert-title\">Docker Toolbox<\/span>\n\t\t\t\n\t\t\t\t\t\t<span class=\"elementor-alert-description\">Docker Toolbox is voor oude Macs en Windows systemen. Het is niet aan te raden om deze te gebruiken, omdat je dan features mist.<\/span>\n\t\t\t\n\t\t\t\t\t\t<button type=\"button\" class=\"elementor-alert-dismiss\" aria-label=\"Deze waarschuwing negeren.\">\n\t\t\t\t\t\t\t\t\t<span aria-hidden=\"true\">&times;<\/span>\n\t\t\t\t\t\t\t<\/button>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dcf37b6 elementor-widget elementor-widget-text-editor\" data-id=\"dcf37b6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2 class=\"fusion-responsive-typography-calculated\" data-fontsize=\"38\" data-lineheight=\"49.4px\">Docker-compose op Linux<\/h2><p>Tot nu toe gaat het vrij goed. Echter, op Linux kan het lastiger zijn om Docker te draaien. Dat is opmerkelijk omdat Docker eigenlijk op Linux draait. Wat performance betreft draait het ook veel beter omdat je geen virtualisatie overhead hebt. Echter, met Linux kan je tegen permissie fouten aanlopen. Als je een proces onder een andere user id hebt lopen, dan kan het zijn dat dit proces geen toegang krijgt of met de verkeerde rechten de bestanden wegschrijft. Dit wordt beter uitgelegd door\u00a0<a href=\"https:\/\/stackoverflow.com\/questions\/29245216\/write-in-shared-volumes-docker\/29251160#29251160\" target=\"_blank\" rel=\"noopener\">thaJeztah<\/a>.<\/p><p>Om dit probleem op te lossen, legt thaJeztah uit dat je de permissies van de bestanden en folder goed moet zetten. Dit is niet een goede oplossing als je developed, want dan moet je na elke aanpassing de permissies goedzetten.<\/p><p>Laten we aannemen dat je onder de gebruiker ubuntu draai met de user id 1000 (je kan dit vinden door de commando\u00a0<i>id<\/i>\u00a0uit te voeren). De oplossing van\u00a0<a href=\"https:\/\/stackoverflow.com\/a\/36118352\" target=\"_blank\" rel=\"noopener\">Istv\u00e1n D\u00f6brentei\u2019s<\/a>\u00a0is om de processen binnen de container met dezelfde user id uit te voeren. Dat kan door de volgende commando in een dockerfile toe te voegen:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a47c30 elementor-widget elementor-widget-code-highlight\" data-id=\"9a47c30\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>RUN usermod -u 1000 www-data<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bc38d10 elementor-widget elementor-widget-text-editor\" data-id=\"bc38d10\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In dit geval nemen we aan dat de gebruiker ubuntu altijd onder de gebruiker id 1000 werkt. Maar, als je het op een andere server of werkplek uitrolt, dan kan de id verschillen.<\/p><p>Verder moet je ontdekken welke gebruikersnaam in de Docker container wordt gebruikt.<\/p><h2 class=\"\" data-fontsize=\"38\" data-lineheight=\"49.4px\">Hoe maak je docker-compose cross-platform geschikt<\/h2><p>In deze blog zet ik als voorbeeld een PHP + Apache + MySQL installatie neer met Docker. Hier hebben we het volgende voor nodig:<\/p><ul><li>mysql:5.7.22<\/li><li>php:7.4-apache<\/li><\/ul><p><b>MySQL \u2013 bepaal de gebruiker<\/b><\/p><p>Deze image heeft geen ps commando, waardoor het achterhalen van de lopende processen lastiger gaat. Je kan dit installeren als procps package, maar in dit geval kan gokken ook werken. De gebruikersnaam is letterlijk mysql.<\/p><p><b>PHP \u2013 bepaal de gebruiker<\/b><\/p><p>Vaak draaien webservers met de gebruikersnaam www-data. Voor de zekerheid starten we de image en kijken we welke gebruikersnaam gebruikt wordt. Als je de machine start, dan ontvang je een id van de container.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-84de10f elementor-widget elementor-widget-code-highlight\" data-id=\"84de10f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>docker run -d php:7.4-apache\nbbab0180d4f2d010ec25247bf0e4eec9f12c8c80fdbbf4be06b3a73bfd81a42b<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b7f15ea elementor-widget elementor-widget-text-editor\" data-id=\"b7f15ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Gebruik de id in de exec commando om de processen te achterhalen. Gebruik rm om de machine te verwijderen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ae06fbe elementor-widget elementor-widget-code-highlight\" data-id=\"ae06fbe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp># docker exec -it bbab0180d4f2d010ec25247bf0e4eec9f12c8c80fdbbf4be06b3a73bfd81a42b ps aux\nUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND\nroot         1  0.1  0.2  83304 24336 ?        Ss   10:28   0:00 apache2 -DFOREG\nwww-data    16  0.0  0.0  83328  6864 ?        S    10:28   0:00 apache2 -DFOREG\nwww-data    17  0.0  0.0  83328  6864 ?        S    10:28   0:00 apache2 -DFOREG\nwww-data    18  0.0  0.0  83328  6864 ?        S    10:28   0:00 apache2 -DFOREG\nwww-data    19  0.0  0.0  83328  6864 ?        S    10:28   0:00 apache2 -DFOREG\nwww-data    20  0.0  0.0  83328  6864 ?        S    10:28   0:00 apache2 -DFOREG\nroot        27  0.0  0.0   7640  2672 pts\/0    Rs+  10:29   0:00 ps aux\n\n# docker stop bbab0180d4f2d010ec25247bf0e4eec9f12c8c80fdbbf4be06b3a73bfd81a42b\n# docker rm bbab0180d4f2d010ec25247bf0e4eec9f12c8c80fdbbf4be06b3a73bfd81a42b<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e2a62a5 elementor-widget elementor-widget-text-editor\" data-id=\"e2a62a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"fusion-text fusion-text-4\"><p>Nu weten we zeker dat het de gebruiker www-data is. Je kan deze tip voor vrijwel elke docker image gebruiken.<\/p><\/div><div class=\"fusion-text fusion-text-5\"><h2 class=\"\" data-fontsize=\"38\" data-lineheight=\"49.4px\">Maak het cross-platform Dockerfile bestand<\/h2><p>Eerst maken we de docker files. Voordat we dat doen, maak de volgende folders:<\/p><ul><li>docker<\/li><li>docker\/mysql<\/li><li>docker\/php<\/li><li>mysql_data<\/li><li>public<\/li><\/ul><p>In de dockerfile die we aanmaken gebruiken we de originele images, maar met twee toevoegingen. Eerst defini\u00ebren we het argument dat user_id de waarde 1000 heeft.<\/p><p>Vervolgens voeren we usermod uit. Deze veranderd het id van de gebruiker binnen de container naar 1000. Het idee hierachter is dat de bestanden dezelfde id\u2019s krijgen als de gebruiker in de host (in dit geval ubuntu). Hierdoor krijg je dus niet de permissie fouten.<\/p><p><i>docker\/mysql\/Dockerfile<\/i><\/p><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bde20fa elementor-widget elementor-widget-code-highlight\" data-id=\"bde20fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>FROM mysql:5.7.22\nMAINTAINER Daniel Koop\n\nARG user_id=1000\nRUN usermod -u $user_id mysql<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-42f61d1 elementor-widget elementor-widget-text-editor\" data-id=\"42f61d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"fusion-text fusion-text-4\"><p><i>docker\/php\/Dockerfile<\/i><\/p><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bd90903 elementor-widget elementor-widget-code-highlight\" data-id=\"bd90903\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>FROM php:7.4-apache\nMAINTAINER Daniel Koop\n\nARG user_id=1000\nRUN usermod -u $user_id www-data<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b1edff9 elementor-widget elementor-widget-text-editor\" data-id=\"b1edff9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"fusion-text fusion-text-4\"><h2 class=\"\" data-fontsize=\"38\" data-lineheight=\"49.4px\">Het docker-compose.yml bestand<\/h2><p>De docker-compose.yml die ik gebruik oogt zoals een normaal bestand. Het verwijst naar de dockerfiles, de poorten, de volumes en afhankelijkheid. In dit voorbeeld neem ik aan dat je al bekend bent met hoe docker-compose.yml werkt. Zo niet, dan raad ik\u00a0<a href=\"https:\/\/vsupalov.com\/yaml-docker-compose-kubernetes\/\" target=\"_blank\" rel=\"noopener noreferrer\">vsupalov\u2019s blog blog aan over de docker-compose bestanden<\/a>.<\/p><p>Bij de dockfile hadden we de optie voor het meegeven van een argument voorbereid. Dit argument kunnen we in de docker-compose.yml meegeven, zodat per installatie \u00e9\u00e9nvoudig de gebruiker id aangepast kan worden.<\/p><p>Om het argument mee te kunnen geven moet de build regel veranderd worden. Wat normaal het volgende zou zijn voor PHP:<\/p><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-184e48c elementor-widget elementor-widget-code-highlight\" data-id=\"184e48c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>build: .\/docker\/php<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7cfd353 elementor-widget elementor-widget-text-editor\" data-id=\"7cfd353\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>wordt het volgende:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bbcef1e elementor-widget elementor-widget-code-highlight\" data-id=\"bbcef1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>build:\n  context: .\/docker\/php\n  args:\n    user_id: ${USER_ID}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-56c2313 elementor-widget elementor-widget-text-editor\" data-id=\"56c2313\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Doe dit voor elke container:<\/p><p><i>docker-compose.yml<\/i><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a184a59 elementor-widget elementor-widget-code-highlight\" data-id=\"a184a59\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>version: '3'\nservices:\n  web:\n    build:\n      context: .\/docker\/php\n      args:\n        user_id: 1000\n    image: wedevelopcoffee\/php-74-apache\n    container_name: php\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    depends_on:\n      - mysql\n    volumes:\n      - \".\/public:\/var\/www\/html\"\n  mysql:\n    build:\n      context: .\/docker\/mysql\n      args:\n        user_id: ${USER_ID}\n    image: mrkoopie\/mysql\n    container_name: mysql\n    ports:\n      - \"3306:3306\"\n    environment:\n      - MYSQL_DATABASE=testdb\n      - MYSQL_ROOT_PASSWORD=root\n      - MYSQL_USER=user\n      - MYSQL_PASSWORD=pass\n    volumes:\n      - \".\/mysql_data:\/var\/lib\/mysql\"<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0fcfc5c elementor-widget elementor-widget-text-editor\" data-id=\"0fcfc5c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Hoe draai je cross-platform docker-composer<\/p><p>Het draaien van docker-compose werkt zoals normaal:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3d88720 elementor-widget elementor-widget-code-highlight\" data-id=\"3d88720\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>docker-compose up<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c027ee1 elementor-widget elementor-widget-text-editor\" data-id=\"c027ee1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"fusion-text fusion-text-11\"><p>Als je de images al hebt gebuild voordat je de aanpassingen hebt gemaakt, dan moet je de \u2013build vlag toevoegen. Dit is alleen nodig als je de Dockerfile(s) of userid aanpast.<\/p><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-462d074 elementor-widget elementor-widget-code-highlight\" data-id=\"462d074\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>docker-compose up --build<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb8b13c elementor-widget elementor-widget-text-editor\" data-id=\"fb8b13c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2 class=\"fusion-responsive-typography-calculated\" data-fontsize=\"38\" data-lineheight=\"49.4px\">Waar kan ik mijn container draaien?<\/h2><p>Je kan je Docker container publiekelijk draaien op onze high-performance SSD servers. Voor slechts \u20ac 3.95 per maand kan je al je virtuele machine draaien.\u00a0<a href=\"https:\/\/www.yourwebhoster.eu\/nl\/high-end-ssd-vps\/\">Start vandaag met Docker op je virtuele server<\/a>.<\/p><h2 class=\"\" data-fontsize=\"38\" data-lineheight=\"49.4px\">Conclusie<\/h2><p>Je docker installatie is nu cross-platform geschikt! Je kan het bestand verder flexibel maken door een .env bestand te gebruiken. Ook hiervoor heeft\u00a0<a href=\"https:\/\/vsupalov.com\/docker-arg-env-variable-guide\/\" target=\"_blank\" rel=\"noopener\">Vsupalov.com een goed artikel<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Docker is een cross-platform tool, maar in de praktijk blijkt dezelfde docker-compose configuratie niet vlekkeloos op zowel MacOS, Windows als Linux te werken. In deze blog leg ik uit hoe je er voor kan zorgen dat je docker-composer configuratie cross-platform te gebruiken is. De bestanden voor deze blog (inclusief docker-compose.yml) is cross-platform te gebruiken en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-4108","post","type-post","status-publish","format-standard","hentry","category-geen-onderdeel-van-een-categorie"],"_links":{"self":[{"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/posts\/4108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/comments?post=4108"}],"version-history":[{"count":13,"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/posts\/4108\/revisions"}],"predecessor-version":[{"id":7702,"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/posts\/4108\/revisions\/7702"}],"wp:attachment":[{"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/media?parent=4108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/categories?post=4108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yourwebhoster.eu\/nl\/wp-json\/wp\/v2\/tags?post=4108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}