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 を作る” の続きを読む

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

Laravel 5.7 の求める PHP 拡張

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

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

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

注意点

“Docker の php:apache で OpenSSL を有効にする Dockerfile 等” の続きを読む

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

“Laradock の Getting Started で Laravel 開発環境構築メモ” の続きを読む

bootstrap-fileinput の Ajax Uploads で Asynchronous Uploads なサンプルを CodeIgniter3 を使って作った記録

使ったもの

  • CodeIgniter3
  • bootstrap-fileinput 4.4.9
  • Bootstrap 3.3.7
  • jQuery 3.2.1

作ったサンプルの内容

  • できること
    • ページ初期表示時にサーバのファイルを表示
    • bootstrap-fileinput 部分のアップロードボタンでファイルをアップロードする
    • 各ファイルの削除ボタンでサーバのファイルを削除する
  • できないこと
    • フォームの Submit で他の input のデータと共にファイルをアップロードする

“bootstrap-fileinput の Ajax Uploads で Asynchronous Uploads なサンプルを CodeIgniter3 を使って作った記録” の続きを読む

iPhone 6s Plus から iPhone Xs へ機種変更した時のデータ引き継ぎ手順

引き継ぐもの

  • 旧 iPhone: iPhone 6s Plus
  • 新 iPhone: iPhone XS

“iPhone 6s Plus から iPhone Xs へ機種変更した時のデータ引き継ぎ手順” の続きを読む