環境
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
以上の結果となりました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/15 01:02
2021/02/15 01:32
退会済みユーザー
2021/02/15 05:25
2021/02/15 05:38
退会済みユーザー
2021/02/15 05:54
退会済みユーザー
2021/02/15 05:58 編集
2021/02/15 06:10
2021/02/15 07:05
2021/02/15 07:12