はじめに
Docker の nginx:latest (1.15.5) で SSL/TLS を使えるようにする最低限の Dockerfile を作りました – oki2a24 で最低限の SSL/TLS 設定を行いました。
今回は、それに加え、簡単な記述でセキュリティ、パフォーマンスを向上させる設定を追加していきます。
Docker の nginx:latest (1.15.5) で SSL/TLS を使えるようにする最低限の Dockerfile を作りました – oki2a24 で最低限の SSL/TLS 設定を行いました。
今回は、それに加え、簡単な記述でセキュリティ、パフォーマンスを向上させる設定を追加していきます。
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;
}
}
# Composer の情報を表示 docker run --rm -it -v $PWD:/app composer:latest composer # Comoser の実行場所がホストの指定場所となっているかを、共有場所の一覧を表示することで確認 docker run --rm -it -v $PWD:/app composer:latest ls -al
php:7.2-apache をビルドするときに、 DocumentRoot を設定していました。特に疑問に感じていませんでしたけれどもあるとき、さまざまな Docker イメージを見ていると設定は build 時ではなく、 run 時に環境変数で設定していることに気が付きました。
DocumentRoot も run 時に設定したいと思いました。
そうするためには、次の手順で実現できると思いました。
上記の方法のうち、 1. と 2. は簡単です。 3. が難しかったです><。
今回、応急処置的な一時しのぎ的なワークアラウンドではありますけれども、汎用的で Linux コマンドの勉強になりましたので、解決するまでの道筋を順番に記録に残していこうと思います。
[mysql] default-character-set=utf8mb4 [mysqld] character_set_server=utf8mb4 collation-server=utf8mb4_bin
FROM debian:stretch-slim なイメージはこれで OK でした。
例えば、今回設定したのは次です。
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}
... 略 ...
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 と思いますが、ちょっと及び腰で念の為という気持ちで、利便性や、参考ページにあったものも一応追加したものが次となります。
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
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
cp env-example .env すること次のアプリが使用可能なこと