[DOCKER] OSX - Apache/php/sql web server - Behouden SQL data

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • skaars
  • Registratie: Oktober 2004
  • Laatst online: 07-02 11:29
Om lokaal aan een website te kunnen ontwikkelen heb ik een webserver nodig die Apache, PHP, SQL(maria) kan draaien. Nu heb ik een aardig werkende oplossing in Xamp, maar graag wil ik dit duurzamer laten draaien in Docker. Nog niet veel ervaring mee, maar met Google een heel eind gekomen.

Dit is voor nu mijn docker-compose:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
version: '3'
services:
  web:
    image: php:8.3-apache
    ports:
      - 80:80
    volumes:
      - /Users/skaars/websites/_docker/apache:/etc/apache2/sites-enabled
      - /Users/skaars/websites:/var/www/html
      - /Users/skaars/websites/_docker/php/php.ini:/usr/local/etc/php/php.ini
    depends_on:
      - mariadb
    networks:
      - dev-env
  phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - 8080:80
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mariadb
    depends_on:
      - mariadb
    volumes:
      - /Users/skaars/websites/_docker/php/php.ini:/usr/local/etc/php/php.ini
    networks:
      - dev-env
  mariadb:
    image: mariadb:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
      MYSQL_USER: 'skaars'
      MYSQL_PASSWORD: 'root'
      MYSQL_DATABASE: 'skaars'
    volumes:
      - mysqldata:/var/lib/mysql
    ports:
      - 3306:3306
    networks:
      - dev-env
volumes:
  mysqldata:
    driver: local
networks:
  dev-env: {}


Dit werkt.

Ik wil de data van de database niet te afhankelijk hebben/maken van het Docker volume. Is het dan aan te raden om het separaat op te slaan, en dan deze map(?) te mounten aan de Docker instantie? Daarnaast wil ik gemakkelijk tussen verschillende websites kunnen "schakelen". Is zoiets ook te regelen met Docker?

Veel woorden gebruikt waarschijnlijk die in Docker-land nergens op slaan, desondanks hoop ik dat men het begrijpt.

het internet is als een neus, je moet eruit halen wat erin zit

Alle reacties


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:21

Hero of Time

Moderator LNX

There is only one Legend

Waarom stel je deze vraag, terwijl je voor je php.ini en je sites config dit al doet? In de documentatie van Docker staat dit letterlijk uitgelegd hoe je zut niet in je container bewaard, maar op de host, juist omdat een rebuild van een container je data anders vernietigd.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • FateTrap
  • Registratie: April 2019
  • Laatst online: 15-03 21:11
skaars schreef op donderdag 2 mei 2024 @ 17:22:
Nu heb ik een aardig werkende oplossing in Xamp, maar graag wil ik dit duurzamer laten draaien in Docker.
Wat bedoel je meer specifiek met 'duurzamer laten draaien'?

NginX is voor iedere taak sneller dan Apache dus als je maximale efficiëntie wilt bereiken dan is NginX de logische keuze.

tweakers.net gebruikt volgens mij ook nog steeds Apache wat ik niet goed begrijp rekening houdend dat er zo veel CPU/GPU prestatie reviews uitgebracht worden op tweakers.

Maar dan gebruikt men voor de website een webserver die niet eens competitief is op gebied van CPU prestaties.

Acties:
  • 0 Henk 'm!

  • FateTrap
  • Registratie: April 2019
  • Laatst online: 15-03 21:11
Ook handig om weten is dat NginX sneller is op FreeBSD dan op Linux.

Het loont waarschijnlijk om Docker te vervangen door podman of jails op FreeBSD.

Acties:
  • 0 Henk 'm!

  • SVMartin
  • Registratie: November 2005
  • Niet online
De oorspronkelijke vraag gaat over lokaal willen ontwikkelen. De reeds gestelde vraag is wat met 'duurzaam' wordt bedoelt. Is dat om eenvoudig andere ontwikkelaars eenzelfde setup te geven?

Is overigens in het algemeen verstandig om niet teveel af te wijken van de productie omgeving.

Acties:
  • 0 Henk 'm!

  • SVMartin
  • Registratie: November 2005
  • Niet online
Overigens, soms is Apache de betere keuze, zie ook hier: https://hackr.io/blog/nginx-vs-apache

Acties:
  • 0 Henk 'm!

  • skaars
  • Registratie: Oktober 2004
  • Laatst online: 07-02 11:29
Goede opmerking over dat 'duurzaam'. Dat was van mij duidelijk een verkeerde woordkeuze. Het is inderdaaf voor lokale development. Wat ik wil bereiken is dat mijn htdocs, SQL data, en eventuele settings worden behouden en gemakkelijk bereikbaar blijven na het uitschakelen van de Docker instantie. Ook zou het erg interessant zijn, zoals @SVMartin al zegt, om eventueel andere ontwikkelaars eenzelfde setup te geven.

het internet is als een neus, je moet eruit halen wat erin zit


Acties:
  • 0 Henk 'm!

  • deHakkelaar
  • Registratie: Februari 2015
  • Laatst online: 27-07-2024
skaars schreef op donderdag 2 mei 2024 @ 17:22:
Ik wil de data van de database niet te afhankelijk hebben/maken van het Docker volume. Is het dan aan te raden om het separaat op te slaan, en dan deze map(?) te mounten aan de Docker instantie?
Je kunt als alternatief voor een "volume mount" een "bind mount" configureren:
When you use a bind mount, a file or directory on the host machine is mounted into a container.
https://docs.docker.com/storage/volumes/
https://docs.docker.com/storage/bind-mounts/

There are only 10 types of people in the world: those who understand binary, and those who don't


Acties:
  • 0 Henk 'm!

  • SVMartin
  • Registratie: November 2005
  • Niet online
Ik zou ook geen latest tag gebruiken, maar een specifieke versie. Zo krijg je altijd een voorspelbare versie en dus eenzelfde omgeving bwanneer je de omgeving start.

Acties:
  • 0 Henk 'm!

  • Oon
  • Registratie: Juni 2019
  • Niet online

Oon

Bind mount gebruiken, maar blijkbaar is je kennis van Docker erg summier, dus ik zou er wel mee oppassen.

Wat je uiteindelijk wil leveren aan evt. andere developers en/of nodig hebt bij livegang is de PHP code en een SQL dump van je data. Als je Mac offline gaat is de Docker instantie (en dus instellingen en data) niet meer bereikbaar, maar blijft het wel op disk staan. Let erop dat je je php.ini en Apache/Nginx config dus ook in een bind mount moet zetten, de webroot van Apache (waar PHP ook bij moet kunnen) kun je met een bind mount gewoon naar je lokale project wijzen.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:21

Hero of Time

Moderator LNX

There is only one Legend

SVMartin schreef op donderdag 16 mei 2024 @ 19:27:
Ik zou ook geen latest tag gebruiken, maar een specifieke versie. Zo krijg je altijd een voorspelbare versie en dus eenzelfde omgeving wanneer je de omgeving start.
Dit heb ik zo veel mensen zien doen en dan even later horen klagen dat hun omgeving stuk is, het vorige week nog werkte en ze niks hebben verandert... Zelfs mensen die er hun geld mee verdienen. :F
skaars schreef op donderdag 16 mei 2024 @ 13:09:
Goede opmerking over dat 'duurzaam'. Dat was van mij duidelijk een verkeerde woordkeuze. Het is inderdaaf voor lokale development. Wat ik wil bereiken is dat mijn htdocs, SQL data, en eventuele settings worden behouden en gemakkelijk bereikbaar blijven na het uitschakelen van de Docker instantie.
Maar dat deed je al met je php en apache config. Zoals ik al direct vroeg, waarom stel je een vraag voor iets wat je eigenlijk al doet?
Ook zou het erg interessant zijn, zoals @SVMartin al zegt, om eventueel andere ontwikkelaars eenzelfde setup te geven.
Dat is juist de hele reden waarom iets als docker bestaat: een consistente, reproduceerbare omgeving maken die snel en eenvoudig is op te zetten.

Ik krijg een beetje een klok/klepel gevoel hier. Je doet al wat dingen, maar begrijpt/snapt niet hoe het werkt/is opgezet en vraagt daarom hoe iets te doen is. Het is verstandig om meer te leren van een tool die je gebruikt voordat je zaken gaat vragen die gewoon netjes gedocumenteerd zijn.

Vragen als "hoe doe ik x" terwijl dat in de documentatie staat en eenvoudig te vinden is getuige niet echt van inzet. Vragen waarom een bepaalde setting werkt of een verklaring voor gedrag past beter. Dan is er daadwerkelijk iets om over te praten, ipv andere bronnen copy/pasten.

Commandline FTW | Tweakt met mate

Pagina: 1