Как настроить файл mariadb docker-compose для использования порта, отличного от 3306? - PullRequest
1 голос
/ 20 мая 2019

Я не могу заставить mariadb использовать другой порт, кроме 3306, при запуске его в контейнере докера с использованием файла docker-compose.

Я уже прочитал документацию по mariadb / docker, провел поиск в Интернете и провел свои собственные эксперименты.

  1. docker-compose file:
version: '3.1'

services:

  db:
    image: mariadb
    restart: always
    environment:
    - MYSQL_ROOT_PASSWORD=mypassword
    - MYSQL_TCP_PORT=33030
    - MYSQL_UNIX_PORT=33020
    ports:
    - "33020:33020"
  1. Dockerfile:
FROM: mariadb: 10.3.14
COPY mydbscript.sql /docker-entrypoint-initdb.d/
EXPOSE 33020
CMD ["mysqld"]

Он никогда не использует порт 33020. Он по-прежнему использует порт 3306. Как динамически передать порт через файл docker-compose во время выполнения?

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Вам необходимо заменить значение по умолчанию my.cnf, чтобы указать пользовательский порт для MariaDB / MySQL:

cd /where/your/docker-compose.yml/located

docker run -it mariadb cat /etc/mysql/my.cnf > my.cnf

# use any text editor your like to open my.cnf, search for "port = 3306"
# and replace it to the port you like to have.

Сконфигурируйте ваш docker-compose.yml так:

version: '3.1'

services:

  db:
    image: mariadb
    restart: always
    volumes:
    - type: bind
      source: ./my.cnf
      target: /etc/mysql/my.cnf
    environment:
    - MYSQL_ROOT_PASSWORD=mypassword
    # add your other configurations here
0 голосов
/ 20 мая 2019

Изображение контейнера статически связано с :3306.Если вы хотите изменить это, вам нужно создать новый образ и настроить базу данных для работы в другом месте.

Однако Docker позволяет вам сопоставить (опубликовать) это как другой порт :33020.

Правильный способ сделать это:

  • docker-compose MYSQL_TCP_PORT=3306
  • docker-compose ports: - "33020:3306"
  • Dockerfile EXPOSE 3306 (без изменений)

Контейнеры (внутри) будут правильно ссылаться на :3306, но внешне (от хоста) база данных будет отображаться на :33020.

NB В docker-compose (сеть) другие контейнеры должны продолжать ссылаться на базу данных на порту :3306.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...