動作環境
OS: mac
CPU: M1、intel 対応
Dockerが導入されていることが前提
Dockerアプリからのインストールはこちらから
構築内容
Centos7
Apache
PHP v8
phpMyAdmin
MySQL v8
Composer
Node.js v16
gulp
参考
GitHub centos7_php8
↑ をクローンすれば手っ取り早いです。
ディレクトリ構造
.
├── Dockerfile
├── README.md
├── copy
│ ├── httpd.conf
│ ├── my.cnf
│ ├── php.ini
│ ├── phpMyAdmin.conf
│ └── v_host.conf
├── docker-compose.yml
└── html
├── php_error.log
└── phpinfo
docker-compose.ymlの内容
#docker-composeで使用するバージョン
version: '3.8'
# dbデータの保存場所。(ホストからは見えない)
volumes:
mysql-data:
services:
#サービスの名前
centos:
build: .
ports:
- 8281:81
- 8282:82
- 8283:83
- 8284:84
- 8285:85
- 8286:86
- 8287:87
- 8290:90
- 8291:91
- 28000:8000
- 28001:8001
- 28002:8002
- 28003:8003
- 28004:8004
- 6001:6001
volumes:
- ./html:/var/www/html:cached
- mysql-data:/var/lib/mysql
working_dir: /var/www/html
tty: true
platform: linux/x86_64
privileged: true
command: /sbin/init
cpuがintel版の場合は 以下をコメントアウト
# platform: linux/x86_64
Dockerfileの内容
FROM centos:7
RUN yum update -y && \
yum install -y httpd
# Apache自動起動
RUN systemctl enable httpd.service
# PHP
RUN yum install -y epel-release
RUN yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum-utils パッケージをインストールすると yum-config-manager コマンドが使えるようになる。
RUN yum -y install yum-utils && \
yum-config-manager --enable remi
#php8
RUN yum -y install --enablerepo=remi,epel,remi-php80 php php-mysqlnd php-mbstring php-gd php-xml php-xmlrpc php-pecl-mcrypt php-fpm php-opcache php-apcu php-pear php-pdo php-zip php-unzip php-pecl-zip phpMyAdmin
# MySQL 5.7 > 8.0
# RUN yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm && \
RUN yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm && \
yum -y install mysql-community-server
# MySQL 自動起動
RUN systemctl enable mysqld
# RUN yum -y install mod_ssl && \
# yum -y install firewalld && \
# yum -y install certbot python2-certbot-apache
# composer 導入
RUN curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer
# composer バージョン変更
# RUN composer self-update 1.8.3
# Git
# RUN yum -y install git
# node.js 導入
# RUN curl -fsSL https://rpm.nodesource.com/setup_16.x
RUN yum install -y https://rpm.nodesource.com/pub_16.x/el/9/x86_64/nodesource-release-el9-1.noarch.rpm
# lsof は、サーバーで特定のポート番号を待ち受けているかどうか、指定ファイルは誰が読み込んでいるのかを調べる
RUN yum install -y nodejs \
yum install -y vim \
yum -y install lsof
# グローバル にgulpを導入
RUN npm install -g gulp
# ホストで用意した設定ファイルを反映
COPY ./copy/httpd.conf /etc/httpd/conf/httpd.conf
COPY ./copy/v_host.conf /etc/httpd/conf.d/v_host.conf
COPY ./copy/php.ini /etc/php.ini
COPY ./copy/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf
# MySQLの設定
# COPY ./copy/my.cnf /etc/my.cnf
# ディレクトリの所有者、グループを変更する。
# RUN chown apache:apache /var/www/html/php_error.log
#公開ポート番号
EXPOSE 80
DockerでCentOSを使ったLAMP環境構築
コマンド ビルドして起動
$ docker-compose up -d
アクセス方法
*ポート番号はdocker-compose.ymlに設定されているポート番号を利用
http://localhost:ポート番号/
コンテナに入る
サービス名はDockerfileで記載してある「centos」
$ docker-compose exec サービス名 bash
ポートの追加方法
例:92番ポートを通す方法
centos7/copy/v_host.confに以下を追加
<VirtualHost *:92>
DocumentRoot /var/www/html/site92 #ポートを通すパスを指定
ServerName localhost92
</VirtualHost>
centos7/copy/httpd.confに以下を追加
の編集
Listen 92
centos7/docker-compose.ymlに以下を追加
ports:
- 8092:92
コマンド 再度ビルドして起動
$ docker-compose up --build -d
MySQLのパスワード変更
初期パスワード確認
$ cat /var/log/mysqld.log | grep password
パスワードポリシー変更
# コマンドラインの場合
$ echo -e "validate_password.check_user_name=OFF\nvalidate_password.length=4\nvalidate_password.mixed_case_count=0\nvalidate_password.number_count=0\nvalidate_password.special_char_count=0\nvalidate_password.policy=LOW\n" >> /etc/my.cnf
# /etc/my.cnf をvimなどで編集する場合
$ vim /etc/my.cnf
# Password policy change
validate_password.check_user_name=OFF
validate_password.length=4
validate_password.mixed_case_count=0
validate_password.number_count=0
validate_password.special_char_count=0
validate_password.policy=LOW
パスワード変更
$ ALTER USER 'root'@'localhost' identified BY 'root';