Nginx + PHP-FPM で unix ドメインソケットを使ったシンプルな docker-compose.yml を書きました。2

スポンサードリンク


ポイント

  • Docker イメージは、 alpine を使わない。
  • Nginx の実行ユーザと PHP-FPM の listen.owner 、 listen.group とを一致させる。
  • Nginx で fastcgi_pass に指定するファイルのディレクトリと、 PHP-FPM で listen に指定するファイルのディレクトリとを、 Docker Compose のトップレベルで定義する名前付き volume で共有する。

“Nginx + PHP-FPM で unix ドメインソケットを使ったシンプルな docker-compose.yml を書きました。2” の続きを読む

すでに Git 管理しているローカルリポジトリを、新規で作った Github リポジトリに反映する方法

コマンドまとめ

# リモートリポジトリを追加
git remote add origin https://github.com/oki2a24/docker_nginx_php_fpm_sock.git
# リモートリポジトリの確認
git remote -v
# ローカルの master ブランチ名を変更
git branch -m master develop
# ローカルリポジトリの内容を、リモートリポジトリへアップロード
git push -u origin --all
git push -u origin --tags
# リモートリポジトリの内容を、ローカルリポジトリへダウンロード
git fetch
# マージしてプッシュ
git checkout master 
git merge --no-ff --allow-unrelated-histories develop 
git push origin master 

“すでに Git 管理しているローカルリポジトリを、新規で作った Github リポジトリに反映する方法” の続きを読む

Laravel プロジェクトのインストールで、ディレクトリを作成しないでカレントディレクトリへ直接インストールする方法

ディレクトリを作成しないでカレントディレクトリへ Laravel をインストールする方法

  • プロジェクト名は指定しないで、 . を指定する。
composer create-project --prefer-dist laravel/laravel . "5.5.*"

“Laravel プロジェクトのインストールで、ディレクトリを作成しないでカレントディレクトリへ直接インストールする方法” の続きを読む

セキュリティ、パフォーマンスをデフォルト設定から向上させる簡単な Nginx の SSL 設定をメモ

はじめに

Docker の nginx:latest (1.15.5) で SSL/TLS を使えるようにする最低限の Dockerfile を作りました – oki2a24 で最低限の SSL/TLS 設定を行いました。

今回は、それに加え、簡単な記述でセキュリティ、パフォーマンスを向上させる設定を追加していきます。

Nginx の SSL 設定

“セキュリティ、パフォーマンスをデフォルト設定から向上させる簡単な Nginx の SSL 設定をメモ” の続きを読む

Docker の nginx:latest (1.15.5) で SSL/TLS を使えるようにする最低限の Dockerfile を作りました

TLS/SSL で接続できる最低限の Nginx Dockerfile

FROM nginx:latest

RUN apt-get update && apt-get install -y \
    openssl \
    ssl-cert \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

COPY ./conf.d/ssl.conf /etc/nginx/conf.d/
server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key  /etc/ssl/private/ssl-cert-snakeoil.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

“Docker の nginx:latest (1.15.5) で SSL/TLS を使えるようにする最低限の Dockerfile を作りました” の続きを読む

Docker を使って、Composer をインストールせずに済ませる方法

# Composer の情報を表示
docker run --rm -it -v $PWD:/app composer:latest composer

# Comoser の実行場所がホストの指定場所となっているかを、共有場所の一覧を表示することで確認
docker run --rm -it -v $PWD:/app composer:latest ls -al

“Docker を使って、Composer をインストールせずに済ませる方法” の続きを読む

【Docker Compose】build 時ではなく、run 時に設定ファイルに環境変数を埋め込む方法メモ

はじめに

php:7.2-apache をビルドするときに、 DocumentRoot を設定していました。特に疑問に感じていませんでしたけれどもあるとき、さまざまな Docker イメージを見ていると設定は build 時ではなく、 run 時に環境変数で設定していることに気が付きました。

DocumentRoot も run 時に設定したいと思いました。

そうするためには、次の手順で実現できると思いました。

  1. Dockerfile で行っていた設定ファイルの COPY を、不要ならやめる。
  2. docker-compose run 時に volumes で設定ファイルのディレクトリを共有することでコンテナに設定ファイルを渡してやる。
  3. コンテナに渡す設定ファイルの必要項目を変数化して run 時に埋め込む。

上記の方法のうち、 1. と 2. は簡単です。 3. が難しかったです><。

今回、応急処置的な一時しのぎ的なワークアラウンドではありますけれども、汎用的で Linux コマンドの勉強になりましたので、解決するまでの道筋を順番に記録に残していこうと思います。

“【Docker Compose】build 時ではなく、run 時に設定ファイルに環境変数を埋め込む方法メモ” の続きを読む

MySQL 8 のデフォルト文字セット系をすべて utf8mb4 にする cnf の書き方メモ

まとめ

[mysql]
default-character-set=utf8mb4

[mysqld]
character_set_server=utf8mb4
collation-server=utf8mb4_bin
  • [mysql] の default-character-set=utf8mb4 で変更される項目
    • character_set_client: latin1 -> utf8mb4
    • character_set_connection: latin1 -> utf8mb4
    • character_set_results: latin1 -> utf8mb4
  • [mysqld] の character_set_server=utf8mb4 で変更される項目
    • character_set_database: utf8mb4 -> utf8mb4
    • character_set_server: utf8mb4 -> utf8mb4
  • [mysqld] の collation-server=utf8mb4_bin で変更される項目
    • collation_database: utf8mb4_0900_ai_ci -> utf8mb4_bin

“MySQL 8 のデフォルト文字セット系をすべて utf8mb4 にする cnf の書き方メモ” の続きを読む

Dockerfile でタイムゾーン設定するメモ

まとめ

FROM debian:stretch-slim なイメージはこれで OK でした。
例えば、今回設定したのは次です。

  • php:apache
  • mysql:latest
FROM mysql:latest

ARG TZ=UTC
ENV TZ ${TZ}
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

COPY ./config-file.cnf /etc/mysql/conf.d/

${TZ} は、docker-compose.yml で定義しました。args と environment です。
${WORKSPACE_TIMEZONE} は、.env ファイルで定義しています。

services:
  php_apache:
    build:
      context: ./php_apache
      args:
        TZ: ${WORKSPACE_TIMEZONE}
    environment:
      - TZ=${WORKSPACE_TIMEZONE}
... 略 ...

“Dockerfile でタイムゾーン設定するメモ” の続きを読む

Docker の php:apache に、Composer を使えるようにする Dockerfile を作る

まとめ。Composer が使える Docker の php:apache の Dockerfile

From php:apache
RUN apt-get update && apt-get install -y \
    unzip \
    zlib1g-dev \
    && docker-php-ext-install \
    zip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
RUN curl -s http://getcomposer.org/installer | php && \
    mv composer.phar /usr/local/bin/composer

これが最低限必要なものを追加した Dockerfile と思いますが、ちょっと及び腰で念の為という気持ちで、利便性や、参考ページにあったものも一応追加したものが次となります。

  • git はインストールしなくても使えるが入れた。
  • echo "export PATH=${PATH}:/var/www/vendor/bin" >> ~/.bashrc && \ も無くてもよいと思う (未検証) が、一応入れた。
From php:apache
RUN apt-get update && apt-get install -y \
    git \
    unzip \
    zlib1g-dev \
    && docker-php-ext-install \
    zip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
RUN curl -s http://getcomposer.org/installer | php && \
    echo "export PATH=${PATH}:/var/www/vendor/bin" >> ~/.bashrc && \
    mv composer.phar /usr/local/bin/composer

“Docker の php:apache に、Composer を使えるようにする Dockerfile を作る” の続きを読む