質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
docker-compose

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Docker

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

Q&A

解決済

1回答

1078閲覧

docker-composeでbuild時にfuelphpのプロジェクトを作成したいのですが、うまくいきません。

UekiKouji

総合スコア121

docker-compose

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Docker

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

0グッド

0クリップ

投稿2018/12/28 01:52

編集2019/01/03 02:09

質問したいことは、docker-composeで、oil createを利用してfuelphpのプロジェクトを作成したいです。
しかし、うまくいきません。ご教授をお願いします。

くわしく以降で説明させてください。

ここのサイトを利用させていただいています。

https://qiita.com/nemui-fujiu/items/2fc3c97800d45e55a435

全体の構成はこのようにしています。

. ├── README.md ├── docker-compose.yml ├── nginx ├── php7 ├── redis └── www

php7の下のフォルダにDockerfileを以下のように作成しました。

FROM php:7-fpm MAINTAINER UekiKouji FROM php:7.2-fpm RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd && apt-get install -y zip unzip #composer RUN curl -sS https://getcomposer.org/installer | php && \ mv composer.phar /usr/local/bin/composer && \ chmod 777 /usr/local/bin/composer WORKDIR /var/www RUN cd /var/www && \ curl https://get.fuelphp.com/oil | sh && oil create fuel_server

docker-compose up --build -dを実行しました。以下のようにfuelphpのプロジェクトは作成されているようです。
しかし、コンテナの中に入って確認すると、ファイルが作成されていませんでした。
コンテナの中でoil createを直接実行すると、プロジェクトは作成されます。
どうしてこのようなことになるのでしょうか。
わからないので、教えていただきたいです。

Step 7/7 : RUN cd /var/www && curl https://get.fuelphp.com/oil | sh && oil create fuel_server ---> Running in 695f8986b3c7 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 479 100 479 0 0 466 0 0:00:01 0:00:01 --:--:-- 466 composer create-project fuel/fuel fuel_server Do not run Composer as root/super user! See https://getcomposer.org/root for details Installing fuel/fuel (1.8.1) - Installing fuel/fuel (1.8.1): Downloading (100%) Created project in fuel_server Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 15 installs, 0 updates, 0 removals - Installing composer/installers (v1.6.0): Downloading (100%) - Installing fuelphp/upload (2.0.6): Downloading (100%) - Installing michelf/php-markdown (1.7.0): Downloading (100%) - Installing psr/log (1.1.0): Downloading (100%) - Installing monolog/monolog (1.24.0): Downloading (100%) - Installing paragonie/random_compat (v9.99.99): Downloading (100%) - Installing paragonie/sodium_compat (v1.8.0): Downloading (100%) - Installing phpseclib/phpseclib (2.0.13): Downloading (100%) - Installing fuel/core (1.8.1.6): Downloading (100%) - Installing fuel/auth (1.8.1): Downloading (100%) - Installing fuel/email (1.8.1): Downloading (100%) - Installing fuel/oil (1.8.1.1): Downloading (100%) - Installing fuel/orm (1.8.1.2): Downloading (100%) - Installing fuel/parser (1.8.1): Downloading (100%) - Installing fuel/docs (1.8.1): Downloading (100%) fuel/fuel suggests installing dwoo/dwoo (Allow Dwoo templating with the Parser package) fuel/fuel suggests installing mustache/mustache (Allow Mustache templating with the Parser package) fuel/fuel suggests installing smarty/smarty (Allow Smarty templating with the Parser package) fuel/fuel suggests installing twig/twig (Allow Twig templating with the Parser package) fuel/fuel suggests installing pyrocms/lex (Allow Lex templating with the Parser package) fuel/fuel suggests installing mthaml/mthaml (Allow Haml templating with Twig supports with the Parser package) fuel/fuel suggests installing zordius/lightncandy (Allow Handlebars templating with an extremely fast PHP implementation of handlebars) monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB) monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server) monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required)) monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server) monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server) monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver) monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib) monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome) monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar) monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server) monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server) paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.) paragonie/sodium_compat suggests installing ext-libsodium (PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.) phpseclib/phpseclib suggests installing ext-libsodium (SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.) phpseclib/phpseclib suggests installing ext-mcrypt (Install the Mcrypt extension in order to speed up a few other cryptographic operations.) phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.) Writing lock file Generating autoload files ---> a3084ff10f84 Removing intermediate container 695f8986b3c7 Successfully built a3084ff10f84

資料追加
// docker-compose

version: '2' services: web: container_name: web build: context: ./nginx/ dockerfile: Dockerfile volumes: - ./www:/var/www ports: - "8080:80" links: - app app: container_name: my4pp build: context: ./php7/ dockerfile: Dockerfile volumes: - ./www:/var/www - ./tmp/mysqld:/var/run/mysqld links: - mysql:mysql - redis:redis mysql: container_name: mysql restart: always image: mysql:5.7.24 volumes: - ./mysql:/var/lib/mysql - ./tmp/mysqld:/var/run/mysqld environment: - "MYSQL_DATABASE=my4pp" - "MYSQL_ROOT_PASSWORD=53205320" ports: - "13306:3306" redis: container_name: redis restart: always image: redis:latest volumes: - ./redis:/data ports: - "16379:6379" command: redis-server --appendonly yes

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/01/02 14:24

dockercomposeの設定ファイルは貼れますか?volumesがあればそれが原因な気がしますが
UekiKouji

2019/01/03 02:10

資料を追加しました。ご教授の方をお願いします。
guest

回答1

0

ベストアンサー

volumes: - ./www:/var/www

原因ここだと思います。
volumesはマウントの設定ですが、Dockerの動きとして、

ビルド→マウント

の順で動作します。

つまり、

/var/www 以下にプロジェクトが作成される(ビルド)→ホストマシンの ./www ディレクトリの内容がコンテナの /var/www に上書きされる(マウント)

ということになります。
なのでホストの ./www が空であればコンテナの /var/www も空に上書きされます。
マウントする瞬間はホストマシン側の内容が優先ということです。

ホスト側の ./www にプロジェクトの内容が入っている状態でマウントすればコンテナ側も /var/www が空になることはないはずです。

解決策としては初回だけ手動でコンテナ内でプロジェクト作成を行えば良いです。
以降は必ずホストの ./www 以下にプロジェクトファイルがある状態で開発を進めていくはずなので。

どうしても手動でやりたくない、自動化したいということであればDockerfileの command entorypoint を活用する方法はあります。
これらはビルド→マウント→command, entrypointというようにマウントより後に動作するので、ここにプロジェクト作成のスクリプトを書くという手です。
ただ私はそこまでしなくても良いと思っている派です。

投稿2019/01/03 06:15

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

UekiKouji

2019/01/03 09:22

ありがとうございます。早速やってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問