カテゴリー
Linux

【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 コマンドの勉強になりましたので、解決するまでの道筋を順番に記録に残していこうと思います。

カテゴリー
Linux

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}
... 略 ...
カテゴリー
Linux

Laravel 5.7 をインストールするのに必要な PHP 拡張は Docker の php:7.2-apache に含まれていました。

Laravel 5.7 の求める PHP 拡張

には次のようにありました。

カテゴリー
Linux

Docker の php:apache で OpenSSL を有効にする Dockerfile 等

PHP で OpenSSL をインストールする Dockerfile

From php:apache
RUN apt-get update && apt-get install -y \
  libssl-dev \
  openssl \
  ssl-cert \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* \
  && a2enmod ssl \
  && a2ensite default-ssl

注意点

カテゴリー
Linux

Laradock の Getting Started で Laravel 開発環境構築メモ

Laradock で編集必要な点まとめ

  • cp env-example .env すること
  • .env の、APP_CODE_PATH_HOST を編集すること

前提

次のアプリが使用可能なこと

  • Git
  • Docker
  • Composer

Laradock で環境構築したい Laravel プロジェクト概要

  • samplelaravel ディレクトリを作り、その中で作業する。
  • Laravel プロジェクト名を、SampleProject とする。
  • Laravel 5.4.36
  • MySQL 8.0.12
カテゴリー
Linux

きれいな Vim (vimrc とプラグインを読み込まないデフォルトの設定) で起動する方法と確認メモ

vimrc とプラグインを読み込まないデフォルトの設定での vim 起動コマンドまとめ

  • vim --clean
    • どの環境でもこれで OK。
  • vim -u NONE -U NONE -N --noplugin
    • もっときれいな環境になる。defaults.vim も読み込まない。
    • これは GVim でも機能する。
  • vim -u NONE -N
    • もっときれいな環境になる。defaults.vim も読み込まない。
    • Mac などではこれでよい。
カテゴリー
Linux

【CodeIgniter3】Composer のオートロードだけを使えるようにする

環境

  • CodeIgniter 3.0.6
    • ドキュメントルートに展開した状態とする。
    • つまりドキュメントルートに展開された application、system ディレクトリがあるとする。
  • PHP 5.6

ポイント

  • application/ ディレクトリに compose.json を作成し、composer install すること。
  • application/config/config.php で $config['composer_autoload'] = TRUE;< とすること。
カテゴリー
Linux

【MySQL】無難で一般的な CREATE USER, CREATE DATABASE あたりを押さえる

以下、例で使用する名前

  • DB 名: sample_db
  • ユーザ名: sample_user
  • パスワード: sample_user_pass
カテゴリー
Linux

【Let’s Encrypt】certbot renew の cron が失敗していたので手動で対処した記録

はじめに

certbot renew を cron 設定した記録のメモ – oki2a24 で設定した Let’s Encrypt の certbot による SSL/TLS 証明書の更新がうまく行っていないようです><。

それをとりあえずなんとか解決しましたので、ノートいたします。

カテゴリー
Linux

PHP で require、include したくないので Composer のオートロード (autoload) に入門する

環境

Docker の PHP 上で試しました。

  • OS バージョン
    • cat /etc/issue: Debian GNU/Linux 9 \n \l
    • cat /etc/debian_version: 9.5
  • PHP バージョン
    • php -v:
      PHP 7.2.9 (cli) (built: Aug 22 2018 23:59:10) ( NTS )
      Copyright (c) 1997-2018 The PHP Group
      Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
      root@794dbcc792c6:~# cat /etc/issue