Dockerfile
FROM nginx COPY . /usr/share/nginx/html/
$ sudo docker build -t mynginx .
$ sudo docker run -dit –name myapp -p 8080:80 mynginx
なるほど、document rootが/usr/share/nginx/html/ になるけど、基本的にapacheと同じだね
ソフトウェアエンジニアの技術ブログ:Software engineer tech blog
随机应变 ABCD: Always Be Coding and … : хороший
Dockerfile
FROM nginx COPY . /usr/share/nginx/html/
$ sudo docker build -t mynginx .
$ sudo docker run -dit –name myapp -p 8080:80 mynginx
なるほど、document rootが/usr/share/nginx/html/ になるけど、基本的にapacheと同じだね
Dockerfile
L apacheのdocument rootは、/usr/local/apache2/htdocs/
FROM httpd COPY . /usr/local/apache2/htdocs/
$ sudo docker build -t myapache .
$ sudo docker run -dit –name myapp -p 8080:80 myapache
なるほど、少し分かった
### 文字から数値、数値から文字へ変換
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やるかー
create user user1;
create user user1 with password ‘pass’;
create user user1 with password ‘pass’ valid until ‘Jan 1 2022’;
create user user1 with password ‘pass’ superuser;
create user user1 with password ‘pass’ createdb createrole;
オプション
h: サーバホスト
p: ポート
U: user
d: データベース作成権限
D: データベース作成できない権限
l: ログイン権限
L: ログイン不可権限
r: ユーザー作成権限
R: ユーザー作成不可権限
s: スーパーユーザー権限
S: スーパーユーザー不可権限
P: パスワード設定
なるほど、少しPostgreSQLにも慣れてきた。というより、CRUDまでいくと、やった感はある。
### character型
– character(整数)と書き、その桁数分、必ず文字で埋まる列
– 文字が定義した長さに満たない場合、半角スペースで埋まる
– 長さがオーバーしている場合はそこで自動的に切られる
create table ${table} (${列名} character(桁数));
alter table ${table} add column ${列名} character(10);
select cast(‘Hello’ as character(10));
### character varying(整数)、character varying
– character varying(整数)とvarchar(整数)は同じ
– スペース埋めがされない、登録した文字の長さになる
– 整数を省略したcharacter varingは1GBまで入る文字列
create table ${table} (${列名} character varing(桁数));
alter table ${table} add column ${列名} character varing(10);
select cast(‘Hello’ as character varing(10));
### text型
character varyingと同じもの
### integer
整数値を保存できる型
最小値は-2,147,483,648、最大値は2,147,483,647
select cast(2.4 as integer);
select cast(2.5 as integer);
### smallint, bigint
smallint, bigintはintegerと同じく整数値を保存できる型
smallintは、最小値は-32,768、最大値は32,767
bigintは、最小値は-9,223,372,036,854,775,808、最大値は9,223,372,036,854,775,807
### numeric, decimal
numericとdecimalは小数が可能な数値型。どちらも同じ意味
### boolean
true, false, nullの3つの値
なるほど、大分OKだわ
### データ挿入
insert into department (department_code, department_name) values (‘a’, ‘営業部’);
insert into department (department_code, department_name) values (‘b’, ‘総務部’);
insert into department values (‘c’, ‘製造部’);
insert into department (department_code, department_name) values (‘d’, ‘経理部’);
insert into department (department_code, department_name) values (‘e’, ‘人事部’);
insert into department (department_code, department_name) values (‘f’, ‘物流部’);
### データ取得
select * from department;
select department_code, department_name from department;
select department_code as “部署コード”, department_name as “部署名” from department;
select department_code, department_name from department where department_code = ‘b’;
### データ更新
update department set department_name = ‘hoge’ where department_code = ‘a’;
### データ削除
delete from department;
delete from department where department_code = ‘c’;
delete from department where department_code in(‘a’, ‘c’, ‘e’);
PostgreSQLの他にも、Oracle Database, SQL Server, MySQLなどがある
ライセンスが無料、PostgreSQL Global Development Groupが開発を行なっている
参考になる情報がそこまで多くない
### PostgreSQL接続
$ psql –version
psql (PostgreSQL) 14.2 (Ubuntu 14.2-1.pgdg20.04+1)
$ sudo -u postgres psql
### データベース作成、移動
postgres=# create database testdb;
CREATE DATABASE
postgres=# \c testdb;
You are now connected to database “testdb” as user “postgres”.
testdb=#
### テーブル作成
CREATE TABLE department(
department_code character varying(10) NOT NULL,
department_name character varying(100),
CONSTRAINT pk_department PRIMARY KEY(department_code)
);
– テーブル一覧
testdb=# \dt;
List of relations
Schema | Name | Type | Owner
——–+————+——-+———-
public | department | table | postgres
– テーブルの中身
testdb=# \d department;
Table “public.department”
Column | Type | Collation | Nullable | Default
—————–+————————+———–+———-+———
department_code | character varying(10) | | not null |
department_name | character varying(100) | | |
Indexes:
“pk_department” PRIMARY KEY, btree (department_code)
コマンドは違うが、MySQLと基本的な考え方はある程度同じっぽいな
PostgreSQLのスキーマとは?
– 1つのデータベースの中に複数設定することができる名前空間のこと
– テーブルやビュー、インデックスなどはスキーマの下に配置される
Database -> schema -> table, view, sequence, index
CREATE DATABASEをすると、6つのスキーマが作成される
– information_schema: データベースのメタデータを取得するために利用されるビュー
– pg_catalog: PostgreSQLがシステム的に備えているオブジェクトを格納しているスキーマ
– pg_toast: PostgreSQLで可変長データ型のデータを扱えるようにToastの仕組みを実行するスキーマ
– pg_temp_${backendID}: 一時テーブル用のスキーマ
– public: 標準で使用されるスキーマ
CREATE SCHEMA test_schema;
CREATE SCHEMA test_schema CASCADE;
なるほどー
$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar require phpoffice/phpspreadsheet
require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('B1', 'English'); $sheet->setCellValue('C1', '数学'); $sheet->setCellValue('A2', 'Aさん'); $sheet->setCellValue('A3', 'Bさん'); $sheet->setCellValue('B2', '90'); $sheet->setCellValue('B3', '80'); $sheet->setCellValue('C2', '70'); $sheet->setCellValue('C3', '95'); $writer = new Xlsx($spreadsheet); $writer->save('score.xlsx');
なるほどー
apiVersion: v1 kind: Pod metadata: name: web-pod labels: svc2pod: web spec: containers: - name: nginx image: nginx:1.17.6-alpine ports: - name: http containerPort: 80
apiVersion, kind, metadata, spec
labelsでリソースを分類する
Dockerで簡単な構成でイメージ開発とテストを行い、その後でk8sの複雑な構成で利用する
なるほどー、Dockerをやらんとヤバいな…