🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1501閲覧

Docker Composeによるコンテナの立ち上げ(Laravel, MySQL)

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/02/14 16:03

編集2021/02/14 23:27

環境
macOS BigSur(11.2.1)
Docker version 20.10.2, build 2291f61
docker-compose version 1.27.4, build 40524192

DockerにてAmazon Linux 2にLaravelプロジェクトを立ち上げ、php artisan serveするDockerfileを下記の通り作成しました。

Dockerfile

1FROM amazonlinux:2 2 3# PHPインストール 4RUN amazon-linux-extras install -y php7.3 5RUN yum install -y php-pecl-zip php-mbstring php-dom 6 7# Composerインストール 8RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 9RUN php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 10RUN php composer-setup.php 11RUN php -r "unlink('composer-setup.php');" 12RUN mv composer.phar /usr/local/bin/composer 13 14# 環境変数設定 15ENV COMPOSER_ALLOW_SUPERUSER 1 16ENV COMPOSER_HOME "/opt/composer" 17ENV PATH "$PATH:/opt/composer/vendor/bin" 18 19# Laravelインストール 20RUN composer global require "laravel/installer" 21 22# Laravelプロジェクト作成 23WORKDIR /var/www 24RUN composer create-project laravel/laravel drew 25 26# ポートを公開 27EXPOSE 8000 28 29WORKDIR /var/www/drew 30CMD ["php","artisan","serve","--host","0.0.0.0"]

この、Laravelプロジェクトと別途MySQLコンテナを立ち上げ、docker-composeするために、下記ymlファイルを作成しました。

version: '3' services: db: image: mysql:5.7 container_name: mysql_container environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: horse_db MYSQL_USER: root MYSQL_PASSWORD: root volumes: - ./docker/db/data:/var/lib/mysql - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf restart: always ports: - 3306:3306 app: image: laravel tty: true container_name: laravel_container ports: - 8000:8000 build: /Users/hide/drew_dev volumes: - ./Users/hide/drew_dev/drew_keiba:/var/www/drew depends_on: - db

上記Dockerfileは/Users/hide/drew_dev配下に置いております。

docker-compose up -d

でコンテナの構築、作成、起動、アタッチを試みました。
しかし、mysql_containerコンテナは立ち上がるものの、laravel_containerコンテナが立ち上がりません。

色々調べてみましたが、解決の糸口が見えないのでどうすれば解決出来るか教えていただけますでしょうか。

■追記
おはようございます。
まず、私が作成したDockerfileですが、先の投稿では、
EXPOSE 8000
していましたが、
ymlで
ports:
8000:8000
しているので、冗長のためDockerfileから EXPOSE 8000 を削除しました。
それからDockerfileからimage作成しているので、
ymlの、
image: laravelの記述をこれもまた削除しました。
以上を踏まえた上で、suama様のご指示通りに、動かしてみました。(上のコードは初回投稿のままにしています。)

一度全て停止

docker-compose down

停止しました

サービスを指定してdbだけをまず起動

docker-compose up -d db

Creating network "docker_mysql_default" with the default driver
Creating mysql_container ... done

psでデータベースが正しく起動しているか確認

docker-compose ps

Name Command State Ports

mysql_container docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
問題なさそうです。

appだけ -d をつけずに起動

docker-compose up app

Creating laravel_container ... done
Attaching to laravel_container
laravel_container | Could not open input file: artisan
laravel_container exited with code 1

以上の結果となりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

docker-compose up の際に、エラーが出て停止しているのでしょうか?
docker-compose ps と打ってみて、StateがUpでなくExitになっていたら、起動の際のエラーになっているので、app (Laravel) だけをフォアグラウンドで起動して、起動時のログをターミナルで見ながら確認してみるのはどうでしょう。

bash

1# 一度全て停止 2docker-compose down 3 4# サービスを指定してdbだけをまず起動 5docker-compose up -d db 6 7# psでデータベースが正しく起動しているか確認 8docker-compose ps 9 10# appだけ -d をつけずに起動 11docker-compose up app

Laravelはわからないので、これくらいしか書けませんが、もしログでさらになにか情報が出てきそうであれば、質問のほうにも追記していただければと思います。

投稿2021/02/14 22:42

suama

総合スコア1997

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lulucom

2021/02/15 01:02

> laravel_container | Could not open input file: artisan ログに何か出てきましたね。 artisanはLaravelのファイルです。これが開けないということは、Laravelプロジェクトのトップディレクトリへ正しく移動できていないか、あるいはLaravelプロジェクトの作成が失敗している、ということはないでしょうか。
suama

2021/02/15 01:32

Lulucomさま、ありがとうございます!(Laravelわからないので恐れ入ります) Laravelプロジェクトの作成が失敗している、とかであれば、もしかしたらイメージも作り直すといいかもしれないですね。 docker-compose down docker-compose build --no-cache でイメージを再作成します。
退会済みユーザー

退会済みユーザー

2021/02/15 05:25

Lulucom様 artisanのところが原因でコンテナがexitedしていたようなので、dockerfileから、artisanの箇所のCMDを削除したところ、コンテナがupするようになりました。 が、コンテナに入ってみたらおっしゃる通りdrewディレクトリ配下にLaravelプロジェクトがそもそも作成されていませんでした。 死にたいです。
Lulucom

2021/02/15 05:38

死なないでください。 すみません、docker-compose.ymlの書き方に疎いのですが、 以下の先頭の「./」って正しいのでしょうか。「.」が余計ということはありませんでしょうか。 volumes: - ./Users/hide/drew_dev/drew_keiba:/var/www/drew
退会済みユーザー

退会済みユーザー

2021/02/15 05:54

Lulucom様 すげー! 「. 」取っ払ったらちゃんとLaravelのプロジェクト作成されました???? これは、多分ぼくなら、3日は気付かなかったでしょう。すごいです。ありがとうございました。 docker-composeしたかったのも、appとdbのネットワークを簡単に構築したかったからなのですが、解決出来てなによりです。suama様にもかんしゃです!
退会済みユーザー

退会済みユーザー

2021/02/15 05:58 編集

お二人にベストアンサー出したいんですけどワンスレッド、ワンベストアンサーみたい?な感じなので、suama様にベストアンサーさせていただくことになりますが、Lulucom様も同様にありがとうございました。ベストアンサーです。
Lulucom

2021/02/15 06:10

ありがとうございます 笑 よかったです。
suama

2021/02/15 07:05

よかったです!Lulucomさま、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問