LoginSignup
12
7

More than 3 years have passed since last update.

docker-composeとGitを利用したWebシステム開発の効率化

Last updated at Posted at 2020-11-21

はじめに

【コンテナとGitを利用したWebシステム開発の効率化】というタイトルで記事を投稿したが、その後docker-compose も試しに使ってみたので、その時の内容をメモとして残しておく。

実行環境

【Docker導入環境】
  ・Ubuntu 20.04 LTS(GCP上)
  ・docker 19.03.13
  ・docker-compose 1.25.0

【コンテナ環境】
  ・Image Ubuntu:20.04
  ・Apache 2.4.41  ※バージョン指定をしていないのでインストール時の最新

試してみる事

以下の流れで、docker-compose を使ってWebサービスの立ち上げ・停止などを試してみる。

1.環境準備
2.Github上にリポジトリを作成
3.ホスト側で用意するファイル
4.docker-compose を使った操作確認

1.環境の準備

GCP上にVMインスタンスを作成
 ※イメージはUbuntu20.4 LTS

パッケージ管理ツールのアップデート

$ sudo apt update

gitのインストール

$ sudo apt install -y git

dockerのインストール
 【Dockerコンテナ内のUbuntuではsystemctlは使えない】の手順1を参考に。

docker-composeのインストール

$ sudo apt install -y docker-compose 

問題なくインストールできているか確認

$ docker-compose --version
docker-compose version 1.25.0, build unknown

2.Github上にリポジトリを作成

Github上で以下を実施する。

■Public用のリポジトリを作成 
 ※手順3では、Github上のPublicリポジトリからクローンすることを前提としている。

■作成したリポジトリ内の直下に『App』フォルダを作成

■『App』フォルダ内にindex.htmlを作成
 ※中身は適当に記載

■開発用のブランチを切る
 ※手順3ではブランチ名は main(本番用)dev(開発用) を前提としている。

3.ホスト側で用意するファイル

以下のディレクトリ構成でファイルを用意

./docker-compose.yml
./Dockerfile
./site_config/
  - demo_site.conf

./mount/
  - main/
   - Github上のmainブランチをクローンする

  - dev/
   - Github上のdevブランチをクローンする

ディレクトリ作成
#################################################
# サイトコンフィグの設定ファイルを入れるディレクトリ #
#################################################
$ sudo mkdir ./site_config


################################
# マウント用のディレクトリを作成  #
################################
$ sudo mkdir ./mount

# ソースコード格納場所
$ sudo mkdir ./mount/main
$ sudo mkdir ./mount/dev
Github上のソースをクローン
$ sudo git clone --depth 1 -b main https://github.com/Smiler5617/test_websys.git ./mount/main
$ sudo git clone --depth 1 -b dev https://github.com/Smiler5617/test_websys.git ./mount/dev

以下の様に、各ファイルを作成

demo_site.conf
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/App/
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Dockerfile
# ベースイメージの取得
FROM ubuntu:20.04

# 必要パッケージのインストール
RUN apt update
RUN apt install -y tzdata
RUN apt install -y apache2

# サイト設定の読み込み
COPY ./site_config/demo_site.conf /etc/apache2/sites-available/
RUN a2dissite 000-default
RUN a2ensite demo_site

# マウント用のディレクトリを作成
RUN mkdir /var/www/html/App

# ポート開放
EXPOSE 80

CMD ["apachectl", "-D", "FOREGROUND"]
docker-compose.yml
version: '3.7'

services:
  web_main:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./mount/main/App:/var/www/html/App
    ports:
      - 8080:80

  web_dev:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./mount/dev/App:/var/www/html/App
    ports:
      - 8081:80

4.docker-compose を使った操作確認

全サービスの起動

$ docker-compose up

 ※初回起動時は、ビルドやイメージのダウンロードが自動で開始される。

以下の環境にアクセスできれば、ひとまず起動はできている。
  http://[VMの外部IP(グローバルIPアドレス)]:8080/
  http://[VMの外部IP(グローバルIPアドレス)]:8081/
 

起動停止
Ctrl + C

バックグラウンドで実行

$ docker-compose start
Starting web_main ... done
Starting web_dev  ... done

 ※$ docker-compose up -d でもOKだが、ログの確認したいならstartがよい。

停止

$ docker-compose stop
Stopping 【Googleアカウント名】_web_dev_1  ... 
Stopping 【Googleアカウント名】_web_main_1 ... 

指定してサービスの起動や停止も可能

$ docker-compose start web_main
Starting web_main ... done

$ docker-compose stop web_main
Stopping 【Googleアカウント名】_web_main_1 ... 

サービスの停止&削除

$ docker-compose down

 ※サービスが削除されると、startrestartで起動できなくなる。

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7