Docker ComposeでLAMPの環境を作ってみる
- html/index.php
- Vagrantfile
- Dockerfile
- docker-compose.yml
のファイルを作成。
Vagrantfile
Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.network "forwarded_port", guest: 80, host: 80 config.vm.synced_folder ".", "/vagrant", type:"virtualbox" config.vm.provision :docker config.vm.provision :docker_compose, yml: "/vagrant/docker-compose.yml", run: "always" end
Dockerfile
FROM php:apache RUN apt-get update RUN docker-php-ext-install pdo_mysql WORKDIR /var/www/html EXPOSE 80
docker-compose.php
version: '3' services: hoge-app: build: . image: hoge-img ports: - 80:80 volumes: - /vagrant/html:/var/www/html hoge-db: image: mysql ports: - 3306:3306 volumes: - hoge-vol:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: hogehoge volumes: hoge-vol:
<?php $pdo = new PDO('mysql:dbname=hoge;host=hoge-db;charset=utf8mb4', 'root', 'hogehoge'); $stmt = $pdo->query('SELECT * FROM hoge_tbl'); $data = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($data as $row) { print_r($row); }
Vagrantで起動。
> vagrant up > vagrant ssh
MySQLでテーブルを作成し、データを入れる。
$ cd /vagrant $ docker-compose exec hoge-db mysql -u root -p Enter password: hogehoge mysql> CREATE DATABASE hoge; mysql> USE hoge; mysql> CREATE TABLE hoge_tbl (id INT, name TEXT); mysql> INSERT INTO hoge_tbl VALUES (1, 'aaa'); mysql> \q
ブラウザからアクセスすると、テーブルのデータが取得できている。