[Docker] 環境変数を渡す

Dockerfile

FROM ubuntu:latest

ARG hoge
ENV HOGE=${hoge}

$ sudo docker build ./ -t test –build-arg hoge=”abc”
$ sudo docker run -itd –rm –name my_container test:latest
$ sudo docker exec -it my_container /bin/bash
root@1ae829aee3fc:/# echo $HOGE
abc

なるほどー
次はdockerでpostfix

[Docker] CentOS httpdのdocument root変更

FROM centos:centos7
ENV APACHE_DOCUMENT_ROOT /var/www/html/ssl/
RUN yum update -y && yum clean all
RUN yum install -y epel-release
RUN yum -y install install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum install -y httpd
RUN yum -y install --enablerepo=remi,remi-php74 php php-devel php-mbstring php-pdo php-xml php-gd php-fpm php-mysqlnd php-opcache php-pecl-zip libzip5
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/sites-available/*.conf
COPY . /var/www/html/
EXPOSE 80 443
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

$ sudo docker build -t mycentos .
$ sudo docker run -dit –name myapp -p 8080:80 mycentos

あれ、うまくいかんな…

[Docker] php:8.0-apacheのdocument root変更

FROM php:8.0-apache
ENV APACHE_DOCUMENT_ROOT /var/www/html/ssl/
COPY . /var/www/html/

RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/sites-available/*.conf

$ sudo docker build -t myapache .
$ sudo docker run -dit –name myapp -p 8080:80 myapache
http://192.168.56.10:8080/api/

ん? これ、CentOSでもいけるのか??

GitlabからCodeCommitへミラーリング

1. CodeCommitでレポジトリを作成します

2. ミラーリングに必要な権限のIAMポリシー作成

{
  "Version": "2012-10-17",
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codecommit:GitPull",
        "codecommit:GitPush"
      ],
      "Resource" : "arn:aws:codecommit:ap-northeast-1:xxxx:mirroring"
    }
  ]
}

作成したポリシーのarnは後ほど使用する
arn:aws:iam::xxxx:policy/CodeCommitPolicy

IAM Userを作成する
name: gitlab-mirroring-user
credential type: Access key – Programmatic access
CodeCommitPolicyをattach

HTTPS Git credentials for AWS CodeCommit を作成

### Gitlab
project作成
Mirroring repositories

5分くらい時間がかかってるが、ちゃんと反映されている!
なんか、codecommit, pipelineでデプロイした方が良さそう

[Docker] CentOSでPHPを動かしたい

Dockerfile

FROM centos:centos7
RUN yum update -y && yum clean all
RUN yum install -y epel-release
RUN yum -y install install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum install -y httpd
RUN yum -y install --enablerepo=remi,remi-php74 php php-devel php-mbstring php-pdo php-xml php-gd php-fpm php-mysqlnd php-opcache php-pecl-zip libzip5
COPY . /var/www/html/
EXPOSE 80 443
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

sudo docker build -t mycentos .
sudo docker run -dit –name myapp -p 8080:80 mycentos

なるほど、少し見えてきた
apacheのドキュメントルート変更、環境変数の設定周りをやりたい

[Docker] CentOSを動かしたい

Dockerfile

FROM centos:centos7
RUN yum install -y httpd
COPY . /var/www/html/
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

※EXPOSE 80で80番ポートを開ける

$ sudo docker build -t mycentos .
$ sudo docker run -dit –name myapp -p 8080:80 mycentos

apache, nginxに比べると、若干複雑になるね

[PostgreSQL] よく使うSQL

### 文字から数値、数値から文字へ変換
cast(A as B) で型変換を行う

select cast(‘0123’ as integer);
select cast(‘0123.45’ as numeric);
select cast(‘1234567.345’ as numeric(10,2));
select cast(‘1234567.345’ as numeric(10,3));
select cast(‘1234567.345’ as numeric(10,5));
select cast(‘-123456.789’ as numeric);
select cast(‘-123456.789’ as numeric(8,2));
select cast(‘abc’ as integer);

### 文字の切り取り
select * from left(‘abcedfghijk’, 3);
select * from left(‘abcedfghijk’, 5);
select * from right(‘abcedfghijk’, 3);
select * from right(‘abcedfghijk’, 5);
select * from substring(‘abcedfghijk’, 3,4);
select * from substring(‘abcedfghijk’, 5,3);
select * from substring(‘abcedfghijk’, 3,length(‘abcedfghijk’));
select * from substring(‘abcedfghijk’, 3,length(‘abcedfghijk’)-3);

### 前0埋め、後0埋め
– 前
select lpad(‘12345’, 8, ‘0’);
– 後
select rpad(‘12345’, 8, ‘0’);

### 数値を文字に変換
select * from to_char(12345.67, ‘FM999,999.999’);

### 日付、週、月
日付 + cast( ‘5 days’ as INTERVAL ) — 5日加える
日付 + cast( ‘5 weeks’ as INTERVAL ) — 5週加える
日付 + cast( ‘5 months’ as INTERVAL ) — 5か月加える

–年月日時分の書式
select to_char(now(),’YYYY/MM/DD HH24:MI:SS’); –2020/04/01 22:34:56

–年月日の書式
select to_char(now(),’YYYYMMDD’); –20200401
select to_char(now(),’YYYY/MM/DD’); –2020/04/01
select to_char(now(),’YYYY.MM.DD’); –2020.04.01
select to_char(now(),’YYYY年MM月DD日’); –2020年04月01日

–月日の書式
select to_char(now(),’MMDD’); –0401
select to_char(now(),’MM/DD’); –04/01
select to_char(now(),’MM.DD’); –04.01
select to_char(now(),’MM月DD日’); –04月01日

–時刻の書式
select to_char(now(), ‘HH:MI:SS’); –10:34:56(12時間表記)
select to_char(now(), ‘HH24:MI:SS’); –22:34:56(24時間表記)
select to_char(now(), ‘HH24時MI分SS秒’); –22時34分56秒

### 配列の要素数を取得
array_length(配列や配列の変数名, 1)

ニャルほどー
さて、Dockerやるかー