Задать вопрос
@Synacs-U
Html, CSS, Js, Jquery, PHP, Mysql

Как использовать уже запущенный контейнер?

Есть docker-compose.yml который запускает 2 контейнера (mysql-5.7 и mysql-8.0)
docker-compose.yml (mysql)

version: '3'

services:
  mysql-5.7:
    image: mysql:5.7
    volumes: 
      - ./database/5.7:/var/lib/mysql
    environment: 
      MYSQL_ROOT_PASSWORD: secret
    networks: 
      - mysql-5.7-network
    ports: 
      - 3307:3306

  mysql-8.0:
    image: mysql:8.0
    volumes: 
      - ./database/8.0:/var/lib/mysql
    environment: 
      MYSQL_ROOT_PASSWORD: secret
    networks: 
      - mysql-8.0-network
    ports: 
      - 3308:3306


networks:
  mysql-5.7-network:
    name: mysql-5.7-network
    driver: bridge
  mysql-8.0-network:
    name: mysql-8.0-network
    driver: bridge



И есть несколько проектов, некоторые из которых будут использовать mysql7, а другие Mysql5.7.
Вот docker-compose.yml который их запускает:
docker-compose.yml (projects)

version: '3'

services: 
  main-project1:
    container_name: main-project1
    build:
      ./main-project1
    volumes: 
      - ./main-project1/src:/var/www/html
      - ./main-project1/nginx/log:/var/www/log
    ports:
      - 8001:80
    networks:
      - main-mysql-5.7

  main-project2:
    container_name: main-project2
    build:
      ./main-project2
    volumes: 
      - ./main-project2/src:/var/www/html
      - ./main-project2/nginx/log:/var/www/log
    ports:
      - 8002:80
    networks:
      - main-mysql-5.7


networks:
  main-mysql-5.7:
    external:
      name: mysql-5.7-network
  main-mysql-8.0:
    external:
      name: mysql-8.0-network



сервер настроен дефолтно (nginx+php7.1/5.6/7.0/7.4), на всякий случай скину Dockerfile (они все плюс минус одинаково настроены):
Dockerfile

FROM ubuntu:20.04

RUN apt-get update && apt-get upgrade -y
RUN apt install software-properties-common -y
RUN add-apt-repository ppa:ondrej/php
RUN apt-get update

RUN apt-get install php7.1-fpm php7.1-mbstring php7.1-curl php7.1-xml php7.1-xdebug php7.1-gd php7.1-mysql php7.1-intl php7.1-xsl php7.1-zip php7.1-memcache php7.1-memcached -y
RUN apt-get install nginx -y

RUN mkdir /var/www/log
COPY ./nginx/config /etc/nginx/sites-available

CMD service php7.1-fpm start && nginx -g "daemon off;"



Так вот, я создал контейнеры mysql, и контейнеры с проектами.
Я добавил их в нужные сети "mysql-5.7-network" на пример.
Когда я пишу что то на подобе этого в index.php:
$dbh = new PDO('mysql:host=mysql-5.7-network;dbname=test', 'roots', 'secret');

Он ругается на то что хоста нет. В чем ошибка?
  • Вопрос задан
  • 57 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
в хосте ожидается не имя сети, а имя сервиса в ней. Попробуйте
$dbh = new PDO('mysql:host=mysql-5.7;dbname=test', 'roots', 'secret');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы