前提・実現したいこと
LaravelでWebサービスを作成しています.
開発環境はdockerを使用し,docker-compose.ymlにてnginx・php・mysqlのコンテナを分けて立ち上げています.
私はmysqlの操作をphpコンテナの中で実行したいです.
docker-compose.yml内でlinksで定義しているにも関わらずphpコンテナ内でbash: mysql: command not found
のコマンドが出て操作することができません.
該当のソースコード
docker-compose.yml
version: '2' services: nginx: image: nginx container_name: "profile-nginx" ports: - "8080:80" volumes: - ./..:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf links: - php php: build: ./php container_name: "profile-php" volumes: - ./..:/var/www/html links: - db db: image: mysql:5.7 container_name: "profile-db" restart: always volumes: - ./volumes:/var/lib/mysql environment: MYSQL_DATABASE: profile MYSQL_USER: kurata MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: secret ports: - 3306:3306
試したこと
- コンテナが立ち上がっていないのか確認->立ち上がっており,コンテナに入ることもできる.
- volumesも作動していない(指定したディレクトリにマウントされていなかった.
補足情報(FW/ツールのバージョンなど)
- macos Mojave
- laravel5.7
- php7.1
追記(1)
以上の質問の内容はMySQLクライアントをインストールすることで解決に至りました.
しかし,MySQLのコンテナとPHPのコンテナは未だ通信することがで来ておらず,
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
上記のエラーが出ています.
追記(2)
上記エラーに関してmysqld.sockファイルを作成したところ,
phpのコンテナからmysqlコマンドを叩くと
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")
のエラーが出現しています.
またmysqlの権限を付与しようとsudoコマンドを使用し試みたのですが権限がないということでした.
laravelでmigrateは実行でき,tableの作成はできているのですがseederでデータを流し込むことには成功しているのですがmysqlコンテナ内でtableの中身を確認するとemptyとなっています.