Docker에서 mysql까지 연결하면[복사 가능]

6736 단어 DockerMySQL8.0

컨디션


mysql8.0.9
rails2.6.3

config/database.파일은 다음과 같습니다.


config/database.yml
    default: &default
      adapter: mysql2 #使うデータベースはmysqlを宣言する。アプリ内にもインストールしといてください。
      encoding: utf8mb4
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      username: root  #mysqlのユーザ名です。docker_compose.ymlmのMYSQL_USERと同じにする必要があります。
      password: password  #mysqlにログインするために必要なパスワード。docker_compose.ymlmのMYSQL_PASSWORDと同じにする必要がある。

    development:
      <<: *default
      host: db  #docker_compose.ymlと同じにする必要がある。今回はdbという名前になります。
      database: portfolio_development  #docker_compose.ymlのMYSQL_DATABASEと同じ名前にする必要がある。

    test:
      <<: *default
      database: portfolio_test  #ここはとりあえずこの名前にしとく。

    production:
      <<: *default
      database: AWSのRDSの識別子
      host: エンドポイント

docker_compose.파일은 다음과 같습니다.


이해하기 편리하도록 환경 변수의 형식을 사용하지 않고 기술하였다.실제 참조에서는 환경 변수를 사용합니다.
docker_compose.yml
version: '3'
services:
  db:  #database.ymlのhostと同じにする必要がある。今回はdbという名前にします。
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password   #必須です。ないと動きません。docker_compose.ymlファイルだけに書けばOKです。
      MYSQL_DATABASE: portfolio_development   #database.ymlのdevelopmentと同じ名前にする必要があります。
      MYSQL_USER: root  #mysqlにログインするユーザー。database.ymlのusernameと同じにする必要がある。
      MYSQL_PASSWORD: password  #mysqlにログインするパスワードです。自身で設定する必要があり、database.ymlのpasswordと同じにする必要がある。
    ports:
      - '3306:3306'
    command: --default-authentication-plugin=mysql_native_password
    volumes:
    - ./tmp/db:/var/lib/mysql/data
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
    stdin_open: true
    tty: true
    command: bundle exec rails server -b 0.0.0.0
volumes:
  mysql-data:
    driver: local

상술한 문건의 요점


・ 로컬 애플리케이션의 docker-compose 입니다.파일에 MYSQL이 있음ROOT_PASSWORD가 있어야 합니다.
・ 로컬 애플리케이션의 docker-compose 입니다.파일 내의 용기 이름, 데이터베이스.파일의 개발자에 있는host 이름을 가져야 합니다.
・docker-compose.yml 파일의 MYSQLUSER 이름 및 MYSQLPASSWORD는 데이터 베이스입니다.yml 파일에 설정된 사용자 이름, 비밀번호 이름과 일치해야 합니다.
・MYSQLROOT_PASSWORD는 docker-compose입니다.파일 내에서 정의합니다.
・dockr-compose.yml 파일의 MYSQLDATABASE는 데이터베이스입니다.yml 파일에 설정된 데이터 베이스와 같습니다.
이 다섯 개만 기억하면 돼.대부분의 잘못은 상술한 부분이다.

주안점



Unknown MySQL server host 'db' (-2)。


원인은gemfile에devwlopmentnimysql2가 쓰여 있지 않았기 때문일 수 있습니다.
또 다른 해결 방법이 있으니 주의해라.

Docker에서 mysql에 연결할 때 편리한 명령

 mysql -u root -p
사용자 이름이 틀렸어요. 여러 번 썼어요.
mysql에 로그인합니다.사전에할 필요가 있다.
이 지령을 입력하면 비밀번호를 입력해야 하지만 처음 사용하면 머리를 기르지 않고 바로 눌러도 된다.암호가 비어 있습니다.이런 느낌으로 각종 비밀번호를 결정한다.
처음이 아닌 경우에는 등록된 비밀번호를 입력해 비밀번호를 업데이트해야 한다.이 업데이트된 ql문은 mysql의 버전에 따라 다를 수 있음을 주의하십시오.
물론 비밀번호가 공백이면 데이터베이스.yml 및 dockercompose.yml의 암호란은 공백일 수 있습니다.
 docker rmi $(docker images -q)
이미지를 삭제합니다.좀 위험해요.
docker-compose down --volumes
볼륨을 삭제합니다.
database.yml、dockder_compose.yml을 정확하게 입력했는데 Unknown 데이터베이스라고 불리면 과거의 음량을 참고하는 경우가 많다.
docker-compose up -d --build
용기의 제작.
docker rmi ID名  -f
강제 삭제.docker image로 표시된 이미지 이름의 ID를 지정하면 삭제할 수 있습니다.

좋은 웹페이지 즐겨찾기