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

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

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

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

Docker

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

Q&A

解決済

1回答

2609閲覧

DockerfileでLAMP環境を構築したい

Nero1129

総合スコア130

docker-compose

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

Docker

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

0グッド

0クリップ

投稿2019/07/10 12:29

CentOSをベースにLAMP環境を構築したい

やりたいこと

複数のコンテナを構築してLAMP環境を構築するのではなく、CentOSをベースに下記のソフトウェアたちをインストールして、イメージ化したいです。

  • httpd
  • which
  • php74
  • php74-php
  • php74-php-cli
  • php74-php-common
  • php74-php-devel
  • php74-php-fpm
  • php74-php-gd
  • php74-php-mysqlnd
  • php74-php-mbstring
  • php74-php-pdo
  • php74-php-xml
  • php74-php-pecl-zip
  • mysql-community-server
  • nodejs

  • composer
  • phpmyadmin
  • laravel

ボーダーより上のソフトウェアをインストールしたイメージの作成は出来ましたが、ボーダーより下のソフトウェアをもインストールされた状態のイメージを作成したいです。

試したコード

Dockerfile

1# Dockerイメージの指定 2FROM centos:centos7 3 4# 作成者情報 5MAINTAINER root 6 7# OS上で実行するコマンド 8# アップデート 9RUN yum -y update 10 11# レポジトリの追加 12RUN yum install -y epel-release http://rpms.famillecollet.com/enterprise/remi-release-7.rpm centos-release-scl http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 13 14# LAMP環境構築に必要なパッケージをインストール 15RUN yum install -y httpd which php74 php74-php php74-php-cli php74-php-common php74-php-devel php74-php-fpm php74-php-gd php74-php-mysqlnd php74-php-mbstring php74-php-pdo php74-php-xml php74-php-pecl-zip --enablerepo=mysql80-community mysql-community-server nodejs 16 17# apachを起動、コンテナ起動時Apache自動起動指定 18CMD systemctl start httpd && systemctl enable httpd && systemctl restart httpd 19 20# デフォルトPHP 21CMD module load php74 22 23# install composer 24CMD php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" && php composer-setup.php && php -r "unlink('composer-setup.php');" 25CMD mv composer.phar /usr/bin/composer 26CMD composer global require "laravel/installer" 27CMD laravel new /var/www/html/laravel && npm install && npm run dev 28CMD systemctl restart httpd 29CMD chown -R apache:apache /var/www/html/sample/storage 30 31EXPOSE 8080:80 32CMD ["deamon off;"] 33

自分が理解している範囲

DockerfileはMakefile同様、ビルドするための指示書みたいな役割であることまでは理解しています。
DockerfileのみでLaravelまでインストールすることは不可能か否や、そして、もしできるのであれば、CMDの書き方を教えていただきたいです。また、仮にMySQL8をインストールした場合、SQL8ではmysql_native_passwordをつけておかないと、デフォルトの「caching_sha2_password」が設定され、phpmyadminがインストールできないことは知っているのですが、これをもDockerfileのみで設定することも可能なのでしょうか?

手動で構築する際に参考にしたサイト

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

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

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

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

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

guest

回答1

0

ベストアンサー

イメージを作るための手順の一部であれば、CMDではなくRUNを指定します。

ただ前提の話になりますが、1プロセス1コンテナで構成するのがDockerの基本だというところは覚えておいてください。複数のコンテナを管理する≒オーケストレーションのためにdocker-composeが存在します。

mysqlはすでに存在するImageを利用したほうが早いし、今後も楽になると思います。

投稿2019/07/10 17:48

otolab

総合スコア765

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問