Как я могу добавить phpMyAdmin в docker-compose

#mysql #docker #docker-compose #phpmyadmin

#mysql #docker #docker-compose #phpmyadmin

Вопрос:

Всем привет, у меня есть этот файл docker-compose

 version: '3'

networks:
  laravel:

services:
  site:
    build:
      context: .
      dockerfile: nginx.dockerfile
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html:delegated
    depends_on:
      - php
      - mysql
    networks:
      - laravel

  mysql:
    image: mysql:5.7.29
    container_name: mysql
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      MYSQL_DATABASE: gestionParking
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_ROOT_PASSWORD: root
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
      - laravel

  php:
    build:
      context: .
      dockerfile: php.dockerfile
    container_name: php
    volumes:
      - ./src:/var/www/html:delegated
    ports:
      - "9000:9000"
    networks:
      - laravel

  composer:
    build:
      context: .
      dockerfile: composer.dockerfile
    container_name: composer
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - php
    user: laravel
    networks:
      - laravel
    entrypoint: ['composer', '--ignore-platform-reqs']

  npm:
    image: node:13.7
    container_name: npm
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    entrypoint: ['npm']

  artisan:
    build:
      context: .
      dockerfile: php.dockerfile
    container_name: artisan
    volumes:
      - ./src:/var/www/html:delegated
    depends_on:
      - mysql
    working_dir: /var/www/html
    user: laravel
    entrypoint: ['php', '/var/www/html/artisan']
    networks:
      - laravel
  

И я хочу добавить phpMyAdmin для графического интерфейса моей базы данных, я пытаюсь это сделать, но это не работает.

 ...
mysql:
    image: mysql:5.7.29
    container_name: mysql
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      MYSQL_DATABASE: gestionParking
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_ROOT_PASSWORD: root
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
      - laravel

 phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
      MYSQL_ROOT_PASSWORD: secret
      PMA_HOST: mysql
      PMA_PORT: 3306
    restart: always
    ports:
    - "8081:80"
    networks:
      - laravel
  

Я думаю, что это возможно, но я думаю, что я ошибаюсь.
Я знаю, что нам нужно установить соединение между сервисом mysql и phpmyadmin, но я не знаю, как это сделать.

Могу ли я помочь мне, пожалуйста

Комментарии:

1. Разве вы не должны открывать порт 3306 в контейнере phpmyadmin?

2. вы думаете, я должен поместить 3306 в контейнер phpMyAdmin вместо 8081

3. nvm, но dockerhub phpmyadmin сообщает, что phpmyadmin будет прослушивать localhost: 8080 , поэтому попробуйте открыть «8080: 8080»

4. Да, но в 8080 у меня есть домашняя страница laravel, в противном случае laravel я меняю и помещаю его в 8081

5. Он не будет работать на том же порту. Это работает как «локальный: удаленный». Затем попробуйте 8081: 8080 в контейнере phpmyadmin. Итак, теоретически, вы посещаете localhost:8081, который будет сопоставлен с портом 8080 контейнера phpmyadmin

Ответ №1:

версия: службы ‘3’:

 nginx:
    container_name: nginx
    image: nginx:1.17
    restart: always
    ports:
        - "9998:80"
    volumes:
        - ../:/var/www
        - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    links:
        - php
php:
    container_name: php
    build:
        context: .
        dockerfile: Dockerfile
    restart: always
    volumes:
        - ../:/var/www
        - ~:/home
        - ./php-config/php.ini:/usr/local/etc/php/php.ini
  

приложение:
сборка:
контекст: .
dockerfile: Dockerfile
изображение: hakase-labs / laravel
имя_контейнера:
перезапуск приложения: если не остановлен
tty: истинная
среда:
ИМЯ_СЛУЖБЫ: приложение
SERVICE_TAGS: dev
working_dir: /var/www/html
тома:
— ./:/var/www/html
сети:
— mynet

 composer:
    container_name: composer
    image: composer:1.9.0
    command: tail -f /dev/null
    volumes:
        - ../:/var/www

mysql:
    container_name: mysql
    image: mysql:5.7
    command: mysqld --max-allowed-packet=64M --character-set-server=utf8 --collation-server=utf8_unicode_ci --init-connect='SET NAMES UTF8;' --innodb-flush-log-at-trx-commit=0
    volumes:
        # Mount mysl data directory to keep it perisstent on host system.
        # Use this only in development environment
        # Mysql cannot write to data folder as it is owned by user on host.
        # So chown 999:999 data folder when it is first created
        # Todo: For some reason we are not able to mount log directory from host to mysql container. We need to fix this in future so that we can better manage mysql logs from host machine - Harsha
        #- ~/storage/mysql/log:/var/log/mysql
        - ~/storage/mysql/data:/var/lib/mysql

    environment:
        - "MYSQL_ROOT_PASSWORD=pasword"
        - "MYSQL_DATABASE=name"
        - "MYSQL_USER=name"
        - "MYSQL_PASSWORD=password"
    ports:
        - "3306:3306"

phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin/phpmyadmin
    restart: always
    environment:
        - PMA_HOST=mysql
        - PMA_PORT=3306
    ports:
        - 8001:80
    volumes:
        - /sessions