docker-composeをやってみたメモ
docker-composeを利用すると、複数のコンテナを管理するのに便利なようです。
docker-composeの設定項目
名称 | 内容 |
---|---|
version | Docker Composeバージョン。 記載時点の最新バージョンは3です。 |
services | コンテナの設定をするために必要。 |
image | 使用するDockerイメージ |
build | Dockerfileのディレクトリを指定。 |
ports | 公開するポート番号 |
ports | 公開するポート番号。docker run での-p ホストのポート:コンテナのポート と同じ |
volumes | マウント(同期)するディレクトリ。 docker run での-v ホストのディレクトリ:コンテナのディレクトリ と同じ |
links | コンテナ間を連携するのに利用する |
depends_on | サービス間の依存関係を指定する |
environment | 環境変数 |
nginxでサーバーを立てる設定
ファイル構成
├── config │ └── default.conf //nginxの設定ファイル ├── docker-compose.yml └── www └── index.html //静的ファイル
docker-compose.yml
version: '3' services: nginx: image: nginx:1.15-alpine ports: - "80:80" volumes: - ./config/default.conf:/etc/nginx/conf.d/default.conf - ./www:/var/www
default.conf
nginxの設定を書く。
server { listen 80; server_name example.com; root /var/www; index index.html; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; }
ホストのindex.html
ローカルのwwwフォルダ配下にindex.html作成する。
<html> <head></head> <body> <h1>docker compose!</h1> </body> </html>
コンテナを起動
docker-compose up -d
localhostでアクセスすると↓の画面が表示される。
うまく起動しない場合などにログを見たいときは↓。
docker-compose logs -f
PHP環境を作る
docker-compose.yml
php用のサービスを追加。
nginx用のサービスにlinks
を追加。
version: '3' services: nginx: image: nginx:1.15-alpine ports: - "80:80" links: - php volumes: - ./config/default.conf:/etc/nginx/conf.d/default.conf - ./www:/var/www php: image: php:7.2.8-fpm volumes: - ./www:/var/www
nginxの設定ファイルを修正
修正の内容までわからなかった。。。
server { listen 80; server_name example.com; root /var/www; index index.php; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(\.+)$; fastcgi_pass php:9000;//docker-compose.ymlで定義したサービス名を指定 fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
index.phpを用意
<html> <head></head> <body> <h1>docker compose!</h1> </body> </html> <?php echo('docker compose!');
コンテナを起動
docker-compose up -d
以下が表示される。