source

3306 이외의 포트를 사용하도록 mariadb docker-compose 파일을 설정하려면 어떻게 해야 합니까?

factcode 2022. 12. 25. 09:42
반응형

3306 이외의 포트를 사용하도록 mariadb docker-compose 파일을 설정하려면 어떻게 해야 합니까?

도커 컴포지트 파일을 사용하여 도커 컨테이너에서 실행할 때 mariadb가 3306 이외의 포트를 사용하도록 할 수 없습니다.

저는 이미 mariadb/docker 문서를 읽고 인터넷을 검색하여 제 자신의 실험을 했습니다.

  1. 도킹 스테이션 파일:
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. 도커 파일:
FROM: mariadb: 10.3.14
COPY mydbscript.sql /docker-entrypoint-initdb.d/
EXPOSE 33020
CMD ["mysqld"]

포트 33020은 사용하지 않습니다.아직 포트 3306을 사용하고 있습니다.런타임에 도커 컴포지트 파일을 통해 포트를 동적으로 전달하려면 어떻게 해야 합니까?

기본값을 교체해야 합니다.my.cnfMariaDB/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

컨테이너 이미지가 정적으로 바인딩되어 있는 경우:3306이 설정을 변경하려면 새 이미지를 작성하고 데이터베이스를 다른 곳에서 실행하도록 구성해야 합니다.

그러나 도커에서는 다른 포트로 매핑(게시)할 수 있습니다.:33020.

올바른 방법은 다음과 같습니다.

  • 도커 매개의MYSQL_TCP_PORT=3306
  • 도커 매개의ports: - "33020:3306"
  • 도커 파일EXPOSE 3306(표준)

용기(내부)는 올바르게 참조합니다.:3306단, 외부(호스트로부터)에 데이터베이스가 공개됩니다.:33020.

NB 도커 구성(네트워크) 내에서 다른 컨테이너가 포트의 데이터베이스를 계속 참조해야 합니다.:3306.

언급URL : https://stackoverflow.com/questions/56212960/how-to-configure-mariadb-docker-compose-file-to-use-other-port-than-3306

반응형