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

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

詳細はこちら
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

Q&A

2回答

4663閲覧

odocker-compose up -d --buildに関するエラーについて

suirunakamura

総合スコア16

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

0グッド

0クリップ

投稿2020/12/08 02:57

編集2020/12/08 03:41

docker-compose up -d --buildコマンドを実行すると、下記のようなエラーが発生してしまいます。
今回はlaravel用の環境構築を行いたいです。

docker-compose up -d --build Starting app_db ... error ERROR: for app_db Cannot start service mysql: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\"/host_mnt/Users/nakamura/program/laravel-portfolio/docker-config/mysql/data\\" to rootfs \\"/var/lib/docker/overlay2/3a917c4cbf950dbcc4ae9e8a0b89ab37793a104afccf898ae28930a590853404/merged\\" at \\"/var/lib/docker/overlay2/3a917c4cbf950dbcc4ae9e8a0b89ab37793a104afccf898ae28930a590853404/merged/var/lib/mysql\\" caused \\"not a directory\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type ERROR: for mysql Cannot start service mysql: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\"/host_mnt/Users/nakamura/program/laravel-portfolio/docker-config/mysql/data\\" to rootfs \\"/var/lib/docker/overlay2/3a917c4cbf950dbcc4ae9e8a0b89ab37793a104afccf898ae28930a590853404/merged\\" at \\"/var/lib/docker/overlay2/3a917c4cbf950dbcc4ae9e8a0b89ab37793a104afccf898ae28930a590853404/merged/var/lib/mysql\\" caused \\"not a directory\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type ERROR: Encountered errors while bringing up the project.

下記コードです。

docker-compose.yml

docker

1version: '3' 2 3services: 4 5 web: 6 build: ./docker-config/php 7 container_name: app_php 8 volumes: 9 - ./laravel:/var/www/laravel 10 working_dir: /var/www/laravel 11 depends_on: 12 - mysql 13 14 nginx: 15 image: nginx 16 container_name: app_nginx 17 build: ./docker-config/nginx 18 ports: 19 - "80:80" 20 volumes: 21 - .:/var/www 22 - ./docker-config/nginx/default.conf:/etc/nginx/conf.d/default.conf 23 depends_on: 24 - web 25 26 mysql: 27 image: mysql:8.0 28 container_name: app_db 29 ports: 30 - 3306:3306 31 environment: 32 MYSQL_DATABASE: development 33 MYSQL_ROOT_USER: root 34 MYSQL_ROOT_PASSWORD: root 35 MYSQL_USER: m_user 36 MYSQL_PASSWORD: m_user 37 TZ: 'Asia/Tokyo' 38 39 volumes: 40 - ./docker-config/mysql/data:/var/lib/mysql 41 - ./docker-config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf 42 depends_on: 43 - mysql-volume 44 45 mysql-volume: 46 image: busybox 47 volumes: 48 - ./docker-config/mysql/data:/var/lib/mysql 49 50 phpmyadmin: 51 image: phpmyadmin/phpmyadmin 52 container_name: app_pma 53 environment: 54 - PMA_ARBITRARY=1 55 - PMA_HOST=mysql 56 - PMA_USER=root 57 - PMA_PASSWORD=root 58 links: 59 - mysql 60 ports: 61 - 8080:80 62 volumes: 63 - /sessions

nginx/default.conf

server { index index.php index.html; root /var/www/laravel/public; location / { root /var/www/laravel/public; try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass web:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }

docker-config/nginx/Dockerfile

FROM alpine:3.6 # nginxのインストール RUN apk update && \ apk add --no-cache nginx RUN mkdir -p /run/nginx # RUN apk add openssl # ADD ssl /etc/nginx/ssl # フォアグラウンド CMD nginx -g "daemon off;"

php/Dockerfile

FROM php:7.2-fpm COPY php.ini /usr/local/etc/php/ # install composer RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer # install packages RUN apt-get update \ && apt-get install -y \ gcc \ make \ libpng-dev \ git \ unzip \ vim \ libmcrypt-dev \ mariadb-client \ curl \ gnupg \ openssl \ zlib1g-dev \ && docker-php-ext-install pdo_mysql mysqli mbstring zip # install stable node and latest npm RUN curl -sL https://deb.nodesource.com/setup_10.x | bash RUN apt-get install -y nodejs # install xdebug RUN pecl install xdebug-2.7.2 && docker-php-ext-enable xdebug WORKDIR /var/www ADD . /var/www RUN chown -R www-data:www-data /var/www

php/php.ini

[Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.internal_encoding = "UTF-8" mbstring.language = "Japanese" [xdebug] xdebug.remote_enable = On xdebug.remote_port = 9001 xdebug.remote_autostart = On xdebug.remote_host = 192.168.99.1 xdebug.profiler_output_dir = "/tmp" xdebug.max_nesting_level= 1000 xdebug.idekey = "PHPSTORM"

mysql/my.cnf

# MySQLサーバーへの設定 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_bin # タイムゾーン default-time-zone = SYSTEM log_timestamps = SYSTEM # mysql8.0用に認証変更 default-authentication-plugin = mysql_native_password # エラーログの設定 # log-error = /var/log/mysql/mysql-error.log # スロークエリログ slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 5.0 log_queries_not_using_indexes = 0 # 実行ログ general_log = 1 general_log_file = /var/log/mysql/mysql-query.log # mysqlオプションの設定 [mysql] default-character-set = utf8mb4 # mysqlクライアントツールの設定 [client] default-character-set = utf8mb4

お手数おかけしますがよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

まずエラーを読みましょう

docker-compose up -d --build ERROR: The Compose file './docker-compose.yml' is invalid because: services.mysql.volumes 'type' is a required property services.mysql.volumes 'type' is a required property

書いてある通りですが
「services.mysql.volumes は type プロパティが必須です」と書いてあります

次に、マニュアルを読みましょう

マニュアル

ホストパスのマウントは、単一サービスの定義の一部として行うことができます。 これは最上位の volumes キーにて定義する必要はありません。
ただし複数のサービスにわたってボリュームを再利用したい場合は、最上位の volumes キー において名前つきボリュームを定義してください。 名前つきボリュームは サービス、スウォーム、スタックファイル において用いられます。

- ./docker-config/mysql/data: - ./docker-config/mysql/my.cnf

この部分がlocal:dockerのペアではないため、名前付きボリュームと解釈されるために上記のエラー担っていると思われます。

投稿2020/12/08 03:56

mikkame

総合スコア5036

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

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

suirunakamura

2020/12/08 06:05

ご返信有難うございます! すみません。最初に記載下エラー文ですがこちらは問題なかったです。 自分でエラー箇所を特定するためにわざとやったものです。
guest

0

MySQLのvolumes定義で/docker-config/mysql/dataと/docker-config/mysql/my.cnfの
PATH記載が無いからだと思います。(下段でコメントアウトされてますが。。)

volumes: - ./docker-config/mysql/data:/var/lib/mysql - ./docker-config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

投稿2020/12/08 03:36

Takeshi_Ueda

総合スコア183

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

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

suirunakamura

2020/12/08 03:42 編集

すみません。これは、エラーの原因を探すために一時的に変更しました。 エラー文など本来のものに修正しましたので、ご確認お願いいたします。
Takeshi_Ueda

2020/12/08 03:53

質問の現象が起きる状態での設定を挙げてもらえませんか? これでは、質問の意味がないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問