Docker에서 mysql까지 연결하면[복사 가능]
컨디션
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를 지정하면 삭제할 수 있습니다.
Reference
이 문제에 관하여(Docker에서 mysql까지 연결하면[복사 가능]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/KKDDD/items/d4d50622e9bda5ebd317
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
mysql -u root -p
docker rmi $(docker images -q)
docker-compose down --volumes
docker-compose up -d --build
docker rmi ID名 -f
Reference
이 문제에 관하여(Docker에서 mysql까지 연결하면[복사 가능]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KKDDD/items/d4d50622e9bda5ebd317텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)