はじめに
2017年に書いた「SQLServerだからといって諦めずに、CircleCIでテスト自動化する」が色々古かったので、アップデートしてみました。
尚、記事と合わせてソースコードも更新しました。
imunew/php-with-docker-mssql
変更点
変更したポイントを列挙していきます。
Microsoft SQL Server on Linux
が新しくなった
詳しくは「Docker内の php から SQL Server に接続する(2020年版)」を参照いただきたいのですが、Docker
イメージとPHP
用のドライバを更新しました。
FROM php:7.4
# Install basic packages and extensions
RUN apt-get update \
&& apt-get install -y zlib1g-dev libzip-dev wget gnupg \
&& docker-php-ext-install zip opcache
# Composer install
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
ENV COMPOSER_ALLOW_SUPERUSER 1
# Install SQL Server extensions
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
RUN apt-get install -y unixodbc-dev libgssapi-krb5-2
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN docker-php-ext-enable sqlsrv
RUN docker-php-ext-enable pdo_sqlsrv
CMD ['php']
CircleCI
の設定ファイルをv1
からv2
へ
CircleCI
の設定ファイルをv2
形式で書き直しました。
以下のドキュメントが参考になりました。
.circleci/config.yml
version: 2
jobs:
test:
docker:
- image: php:7.4
environment:
DEFAULT_DSN: sqlsrv:Server=localhost;
DEFAULT_USERNAME: sa
DEFAULT_PASSWORD: p@ssw0rd
- image: mcr.microsoft.com/mssql/server:2017-latest
environment:
ACCEPT_EULA: Y
SA_PASSWORD: p@ssw0rd
resource_class: medium
steps:
- run:
name: Install packages and PHP extensions
command: |
apt-get update \
&& apt-get install -y zlib1g-dev libzip-dev unzip wget gnupg git \
&& docker-php-ext-install zip opcache
- run:
name: Install MSSQL PHP extensions
command: |
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update
ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
apt-get install -y unixodbc-dev libgssapi-krb5-2
pecl install sqlsrv
pecl install pdo_sqlsrv
docker-php-ext-enable sqlsrv
docker-php-ext-enable pdo_sqlsrv
- run:
name: Install composer
command: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
- checkout
- run:
name: Install dependencies
command: |
composer install --no-interaction --prefer-dist
- run:
name: Run Tests by phpunit
command: |
php app/bootstrap.php
vendor/bin/phpunit
workflows:
version: 2
build-workflow:
jobs:
- test
docker-compose.yml
をVersion 1
からVersion 3
へ
docker-compose.yml
のフォーマットが古かったので、Version 3
で書き直しました。
docker-compose.yml
version: "3"
services:
php:
build: ./docker/php
env_file: ./docker/php/.env
volumes:
- .:/app/
working_dir: /app
mssql:
image: mcr.microsoft.com/mssql/server:2017-latest
env_file: ./docker/mssql/.env
ports:
- "1433:1433"
おわりに
3年でこんなに変わるのかと思って調べてみたら、以下のような時系列でした。
- Dockerイメージ
mcr.microsoft.com/mssql/server
がリリースされたのが、2018-09-10
-
PHP Driver for SQL Server
がMicrosoft ODBC Driver 17
をサポートしたのは、2018-3-23
-
CircleCI 2.0
がリリースされたのは、2017-07-11
-
docker-compose.yml v3
がリリースされたのは、2017-01-18
ソフトウェアの寿命は本当に短いですね。
ではでは。
追記(2021−01−27)
CircleCI Japanさんにこの記事を紹介してもらいました。
https://twitter.com/CircleCIJapan/status/1354225129207836673?s=20
ありがとうございます