Docker - instalacja phpmyadmin

Odpowiedz Nowy wątek
2019-04-29 22:11
0

Witam serdecznie :)
Jest to moje pierwsze starcie z Dockerem :)
Potrzebuję środowisko do pracy z php (Symfony i Laravel)

Mam taki plik:

version: "3.1"
services:

    memcached:
      image: memcached:alpine
      container_name: sample-memcached

    redis:
      image: redis:alpine
      container_name: sample-redis

    mysql:
      image: mysql:8.0
      container_name: sample-mysql
      working_dir: /application
      volumes:
        - .:/application
      environment:
        - MYSQL_ROOT_PASSWORD= mysecretpass
        - MYSQL_DATABASE=sample
        - MYSQL_USER=root
        - MYSQL_PASSWORD= mysecretpass
      ports:
        - "8082:3306"

    mariadb:
      image: mariadb:10.4
      container_name: sample-mariadb
      working_dir: /application
      volumes:
        - .:/application
      environment:
        - MYSQL_ROOT_PASSWORD= mysecretpass
        - MYSQL_DATABASE=sample
        - MYSQL_USER=root
        - MYSQL_PASSWORD= mysecretpass
      ports:
        - "8083:3306"

    postgres:
      image: postgres:11.1-alpine
      container_name: sample-postgres
      working_dir: /application
      volumes:
        - .:/application
      environment:
        - POSTGRES_USER=root
        - POSTGRES_PASSWORD= mysecretpass
        - POSTGRES_DB=sample
      ports:
        - "8084:5432"

    elasticsearch:
      image: elasticsearch:6.5.4
      container_name: sample-elasticsearch

    webserver:
      image: nginx:alpine
      container_name: sample-webserver
      working_dir: /application
      volumes:
          - .:/application
          - ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      ports:
       - "8080:80"

    php-fpm:
      build: phpdocker/php-fpm
      container_name: sample-php-fpm
      working_dir: /application
      volumes:
        - .:/application
        - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.3/fpm/conf.d/99-overrides.ini

Chciałbym dodać do niego (w najnowszych wersjach):

  • phpmyadmin,
  • pgadmin

W jaki sposób mogę to zrobić?

Dockera uruchamiam za pomocą: docker-compose up -d
Wyłączam Dockera za pomocą: docker-compose stop

Czy dane wprowadzone do MySQL, zapisane zdjęcia itp będą widoczne po restarcie kontenera?

edytowany 1x, ostatnio: lukmopy, 2019-04-29 22:15

Pozostało 580 znaków

2019-04-29 23:15
0

Pierwsze i najbardziej fundamentalne pytanie: dlaczego chcesz zainstalować i uruchomić aż sześć baz danych jednocześnie?

Jak najbardziej jest to możliwe, lecz wydaje mi się, że może źle rozumiesz ideę konteneryzacji, stąd jestem ciekaw powodu.

Chciałbym dodać do niego (w najnowszych wersjach): (...)

Możesz wykorzystać gotowe kontenery (np. https://hub.docker.com/r/phpmyadmin/phpmyadmin/ - zwyczajnie dorzuć go do pliku Yaml).

Podczas łączenia się z bazą z poziomu PMA jako nazwę hosta wpisz mariadb / mysql - docker-compose automatycznie konfiguruje inter-kontenerowe DNSy tak, że wszystkie kontenery (w ramach pojedynczego docker-compose.yml) widzą się nawzajem po nazwie hosta, więc powinno zadziałać od strzała.

Działa to dla wszystkich kontenerów, więc podobnie możesz np. wejść do kontenera z Postgresem (docker-compose exec postgres bash) i zrobić ping php-fpm :-)

Czy dane wprowadzone do MySQL, zapisane zdjęcia itp będą widoczne po restarcie kontenera?

Wszystko odpowiednio podmontowane za pomocą volumes będzie zachowane - w przypadku MySQLa powinieneś podmontować /var/lib/mysql, w przypadku Redisa /data itd. (zależy od aplikacji oraz kontenera - powinno być w opisie na Docker Hubie).

Nie powinieneś za to montować np. katalogu swojej aplikacji do kontenera z bazą danych (co właśnie robisz), ponieważ nie ma to zwyczajnie sensu - baza danych nie musi / nie powinna mieć dostępu do kodu aplikacji.

Tutaj masz przykładowy docker-compose.yml dla Symfony: https://github.com/maxpou/doc[...]lob/master/docker-compose.yml

Dockera uruchamiam za pomocą: docker-compose up -d (...)

Za pomocą przytoczonych przez Ciebie komend zarządzasz kontenerami, nie "Dockerem".

Daemon Dockera możesz wyłączyć np. za pomocą systemctl stop docker (jeśli działasz na Linuksie opartym o systemd)... po cokolwiek miałbyś to robić.


edytowany 3x, ostatnio: Patryk27, 2019-04-29 23:24

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0