- 投稿日:2020-10-11T21:46:34+09:00
【Next.js】Next プロジェクトを Dockernize する
k8s 環境に Next.js プロジェクトをデプロイすることになったので、いろいろ書いてみた。
今回は npm ではなく、yarn を使用している。環境
- ubuntu 20.04.1
- Docker 19.03.13
- Next.js 9.5.4
また、npm スクリプトはこんな感じ。
{ "scripts": { "dev": "next", "build": "next build", "start": "next start" } }Docker 上で開発を行う
Docker 内の Node で開発を行う場合。ローカルの Node のバージョンを気にせず開発は行えるが、ローカルのエディタでは型定義などを読み込めず面倒ではある。
- Dockerfile
開発用なので、ベースイメージは通常のものにした。FROM node:12.18.4 WORKDIR /app # npmパッケージのインストールに必要なファイルをコピー COPY package.json yarn.lock ./ # npmを使用している場合は、以下のようにする # COPY package*.json ./ RUN yarn install EXPOSE 3000 CMD ["yarn", "dev"]
- Docker build
docker build --rm -t next_dev:latest -f path/to/Dockerfile
- Docker run
プロジェクトのフォルダで実行する。(-v の引数にプロジェクトフォルダを絶対パスで指定すれば OK)docker run -p 3000:3000 -v $PWD:/app -it next_dev:latestProduction 向けにビルドする
ここからは、本番向けにイメージを作成する。
とりあえず作ってみる
いつも通り作ってみる。本番向けなので alpine イメージを使う。
ビルドコンテキスト(Docker build 時に Docker デーモンへ送信されるファイルの場所)はプロジェクトフォルダ。FROM node:12.18.4-alpine WORKDIR /app # ローカルのソースを全てコピー COPY . /app # npmパッケージのインストール、production向けにビルド RUN yarn install && NODE_ENV=production yarn build EXPOSE 3000 CMD ["yarn", "start"]
- ビルド&実行
ビルドにはプロジェクトフォルダで以下のコマンドを実行。
$ docker build --rm -t next_prod:latest -f path/to/Dockerfileデーモンとして動かすには以下のコマンドを実行。
$ docker run -d -p 3000:3000 next_prod:latestこれでサーバー自体は動くが、このままでは Docker イメージのサイズが 900MB あるので、もう少しスリムにしたいところ。
(もちろん、イメージのサイズは Next.js プロジェクトの中身による)$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE next_prod latest d211c6246173 6 minutes ago 899MBmulti stage build する
multi stage build により、Docker イメージの容量を削減する。
- Dockerfile
FROM node:12.18.4-alpine AS base # パッケージのインストールを行う WORKDIR /base COPY . . RUN yarn install # Production向けビルドを行う FROM base AS build WORKDIR /build COPY --from=base /base ./ RUN NODE_ENV=production yarn build # ビルド成果物をコピーし、サーバーを起動 FROM node:12.18.4-alpine AS production ENV NODE_ENV=production WORKDIR /app # ビルド成果物のみをコピーしてやる COPY --from=build /build/package.json /build/yarn.lock ./ COPY --from=build /build/.next ./.next COPY --from=build /build/public ./public # node_modules以下がこのイメージにないので、next.jsのサーバーを動かすために必要 RUN yarn add next EXPOSE 3000 CMD ["yarn", "start"]
- ビルド&実行
$ docker build --rm -t next_prod:msb -f path/to/Dockerfile $ docker run -d -p 3000:3000 next_prod:mdbこれにより、イメージはかなりスリムになった。各イメージの容量はこんな感じ。
$ docker images REPOSITORY TAG SIZE next_prod msb 574MB # production multi stage build next_prod latest 899MB # production build next_dev latest 1.44GB # devおわりに
DockernizeなのかDockerizeなのかよくわからない。
- 投稿日:2020-10-11T20:05:46+09:00
PHPバージョンアップ時にphp7compatibilityを使ってコード互換性を確認する
PHPバージョンアップ時にphp7compatibilityを使うと互換性を簡単にチェックする事ができます。
php7compatibilityを使う時、環境セットアップに多少準備が必要になるのですが、docker環境なら、すでに作成済みのdockerイメージが公開されているので、だいぶお手軽に環境を構築して確認する事ができます。例えば以下はPHP7.1に対しての互換性を確認する際のコマンド例。
--ignore=vendor
でvender配下をチェックから除外する事が出来ます。docker run --rm -v $(pwd):/app vfac/php7compatibility 7.1 --extensions=php --ignore=vendor .参考
- 投稿日:2020-10-11T18:52:41+09:00
Ubuntu上のZabbixで同ホストのDockerコンテナとSystemDプロセスを監視する。
環境
もの Version Ubuntu 20.04 LTS Zabbix 5.0.4 zabbix-agent2 不明,now 1:5.0.4-1+focal amd64 Docker 19.03.12 MariaDb Ver 8.0.21-0ubuntu0.20.04.4 for Linux on x86_64 ((Ubuntu)) Zabbix5のインストール
こちらの手順でインストール
Zabbix-Agent2のインストール
apt install zabbix-agent2
zabbix-agentの停止
systemctl stop zabbix-agent.service systemctl disable zabbix-agent.serviceDocker sockファイルを読み取れるようにする
zabbixユーザーをdockerグループに追加する。
gpasswd -a zabbix docker
参考:Zabbixエージェント2を使用したDockerの監視
ここまでで、Zabbix-Web-Server --> Zabbix-Server --> Zabbix-Agent2の疎通が出来ているはず。
Zabbix Agent2によるSystemd Service監視について
https://tech-lab.sios.jp/archives/18664
Zabbix Agent2 Discovery
以下の公式参照
7 DISCOVERY OF SYSTEMD SERVICESZabbix Agent2 Metrics
以下の公式参照
- 投稿日:2020-10-11T18:50:40+09:00
Dockerでのcomposerのインストールエラーの対処
発生したエラー
$ docker-compose up -d ... ERROR: Service 'web' failed to build: The command '/bin/sh -c php composer-setup.php' returned a non-zero code: 1修正前のDockerFile
# install composer RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" RUN php composer-setup.php RUN php -r "unlink('composer-setup.php');"修正後のDockerFile
# install composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
- 投稿日:2020-10-11T17:55:59+09:00
Elasticsearch > dockerで構築、Twitter情報を取得しKibanaで可視化
2020/10/11
以下を目指します。
- Dockerで構築
- Elasticsearch: 3ノードで起動
- Logstash: Twitterデータ取得
- Kibana: Twitterデータ可視化最終形のソースは以下に保存しています。
https://github.com/sugasaki/elasticsearch-multinode-docker
準備
以下に沿って進みます
Install Elasticsearch with Docker | Elasticsearch Reference [7.9] | Elastic
メモリの割り当て
Make sure Docker Engine is allotted at least 4GiB of memory. In Docker Desktop, you configure resource usage on the Advanced tab in Preference (macOS) or Settings (Windows).
DockerEngineに少なくとも4GiBのメモリが割り当てられていることを確認してください。
Docker Desktopでは、[設定](macOS)または[設定](Windows)の[詳細設定]タブでリソースの使用を構成します。割当メモリが少ないとノードの起動に失敗したりします。
Elasticsearch
シングルノードの開始
他にも、いろんな紹介記事があるので、割愛します。
dockerでElasticSearch立ち上げとお試し操作 - Qiita
マルチノードの開始
DockerComposeを使用して3ノードのクラスター稼働します。
1.
docker-compose.yml
の作成作業用フォルダを用意し直下に
docker-compose.yml
を作成します。3ノードのElasticsearchクラスターを起動します。
ノードes01はlocalhost:9200でリッスンし、es02とes03はDockerネットワークを介してes01と通信します。docker-compose.ymlversion: "2.2" services: # 1st node port=9200 elasticsearch01: image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 container_name: es01 environment: - node.name=es01 - cluster.name=es-docker-cluster - discovery.seed_hosts=es02,es03 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - elasticsearch_multinode_data01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - elastic healthcheck: interval: 20s retries: 10 test: curl -s http://localhost:9200/_cluster/health | grep -vq '"status":"red"' # 2nd node elasticsearch02: image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 container_name: es02 environment: - node.name=es02 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es03 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - elasticsearch_multinode_data02:/usr/share/elasticsearch/data networks: - elastic # 3rd node elasticsearch03: image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 container_name: es03 environment: - node.name=es03 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es02 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - elasticsearch_multinode_data03:/usr/share/elasticsearch/data networks: - elastic volumes: elasticsearch_multinode_data01: driver: local elasticsearch_multinode_data02: driver: local elasticsearch_multinode_data03: driver: local networks: elastic: driver: bridge※この構成では、ポート9200が公開され、パブリックにアクセス可能であることに注意してください。
ポート9200を公開せず、代わりにリバースプロキシを使用する場合は、docker-compose.yml
ファイルで9200:9200を127.0.0.1:9200:9200に置き換えます。 Elasticsearchは、ホストマシン自体からのみアクセスできるようになります。※ ボリュームelasticsearch_multinode_data01〜03は再起動後も保持されます。
それらがまだ存在しない場合は、クラスターを起動したときにdocker-composeによって作成されます。起動
elasticsearch起動
docker-compose up稼働確認
ヘルスチェック
$ curl -X GET "localhost:9200/_cat/health?v&pretty" epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1602390892 04:34:52 es-docker-cluster green 3 3 0 0 0 0 0 0 - 100.0%各ノードのステータス確認
$ curl -X GET "localhost:9200/_cat/nodes?v&pretty" ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.19.0.4 37 63 47 2.44 1.47 1.18 dilmrt - es03 172.19.0.3 18 63 46 2.44 1.47 1.18 dilmrt * es01 172.19.0.2 24 63 48 2.44 1.47 1.18 dilmrt - es02ボリュームが作成されたことを確認
$ docker volume ls DRIVER VOLUME NAME local docker_elasticsearch_multinode_data01 local docker_elasticsearch_multinode_data02 local docker_elasticsearch_multinode_data03data01の詳細確認
$ docker volume inspect docker_elasticsearch_multinode_data01 [ { "CreatedAt": "2020-10-11T04:20:26Z", "Driver": "local", "Labels": { "com.docker.compose.project": "docker", "com.docker.compose.version": "1.27.4", "com.docker.compose.volume": "elasticsearch_multinode_data01" }, "Mountpoint": "/var/lib/docker/volumes/docker_elasticsearch_multinode_data01/_data", "Name": "docker_elasticsearch_multinode_data01", "Options": null, "Scope": "local" } ]さらに、ボリュームの中を確認
ターミナルを立ち上げて、以下のコマンドでdockerの中に入って確認する
$ docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i shlsコマンドで確認
/ # ls -ll /var/lib/docker/volumes/ total 44 drwxr-xr-x 3 root root 4096 Oct 11 04:20 docker_elasticsearch_multinode_data01 drwxr-xr-x 3 root root 4096 Oct 11 04:20 docker_elasticsearch_multinode_data02 drwxr-xr-x 3 root root 4096 Oct 11 04:20 docker_elasticsearch_multinode_data03 -rw------- 1 root root 65536 Oct 11 04:20 metadata.db満足したら
exit
コマンドで終了参考
データの作成
customerというIndexを作成しデータ投入して確認します。
途中でElasticsearchを終了した後、再実行してデータが永続化されているかも確認します。index 作成
curl -X PUT "localhost:9200/customer?pretty&pretty"確認
$ curl -X GET "localhost:9200/_cat/indices?v&pretty" health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open customer FIT3eS3YSR2UEE0np3BnwA 1 1 0 0 416b 208bデータ投入
_id を1指定でデータを投入します
以下をひとまとめで実行しますcurl --include -XPOST "http://localhost:9200/customer/_doc/1?pretty" \ -H 'Content-Type: application/json' \ -d '{ "name": "John Doe", "message": "The night was young, and so was he. But the night was sweet, and he was sour." }'確認
$ curl -X GET 'localhost:9200/customer/_doc/1?pretty' { "_index" : "customer", "_type" : "_doc", "_id" : "1", "_version" : 1, "_seq_no" : 2, "_primary_term" : 1, "found" : true, "_source" : { "name" : "John Doe", "message" : "The night was young, and so was he. But the night was sweet, and he was sour." } }データの永続化確認
Elasticsearchを終了して再度実行します。
$ docker-compose down $ docker-compose upデータの永続化確認
$ curl -X GET "localhost:9200/_cat/indices?v&pretty" health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open customer oD3E_VXqSWy7I0F1NSIlyQ 1 1 1 0 9.6kb 4.8kb $ curl -X GET 'localhost:9200/customer/_doc/1?pretty' { "_index" : "customer", "_type" : "_doc", "_id" : "1", "_version" : 1, "_seq_no" : 2, "_primary_term" : 1, "found" : true, "_source" : { "name" : "John Doe", "message" : "The night was young, and so was he. But the night was sweet, and he was sour." } }kibanaの追加
参考: Install Kibana with Docker | Kibana Guide [7.9] | Elastic
設定追加
docker-compose.yml
のVolumesセクションの上らへんに以下を追加します。docker-compose.yml# kibana kibana: image: docker.elastic.co/kibana/kibana:7.9.2 container_name: kibana ports: - "5601:5601" environment: - ELASTICSEARCH_HOSTS=http://es01:9200 # container_nameを参照する - "I18N_LOCALE=ja-JP" # 日本語表示にする depends_on: - elasticsearch01 - elasticsearch02 - elasticsearch03 networks: - elastic healthcheck: interval: 10s retries: 20 test: curl --write-out 'HTTP %{http_code}' --fail --silent --output /dev/null http://localhost:5601/api/status restart: alwaysenvironmentに日本語かの設定も追加しています。
実行
$ docker-compose up確認
以下へアクセスする
http://localhost:5601/ブラウザでKibana画面が表示されます
確認
kibanaメニュー > Management > Stack管理
データメニューからインデックス管理を選択します。
先ほど作成した
customer
インデックスが表示されていると思います。ひとしきり満足したらElasticsearchを終了してLogstashに移ります。
Logstash
参考: Running Logstash on Docker | Logstash Reference [7.9] | Elastic
設定追加
docker-compose.yml
の、Kibanaの設定の後ろ、Volumesセクションの上らへんに以下を追加します。docker-compose.yml# logstash logstash: image: docker.elastic.co/logstash/logstash:7.9.2 container_name: logstash networks: - elastic depends_on: - elasticsearch01 - elasticsearch02 - elasticsearch03 restart: always実行
$ docker-compose up確認
起動しているか確認してみる
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 072d509e37f0 docker.elastic.co/kibana/kibana:7.9.2 "/usr/local/bin/dumb…" 16 minutes ago Up 16 minutes (healthy) 0.0.0.0:5601->5601/tcp kibana 7bd68ec00995 docker.elastic.co/logstash/logstash:7.9.2 "/usr/local/bin/dock…" 16 minutes ago Up 16 minutes 5044/tcp, 9600/tcp logstash 7bff0bddb7e1 docker.elastic.co/elasticsearch/elasticsearch:7.9.2 "/tini -- /usr/local…" 16 minutes ago Up 16 minutes 9200/tcp, 9300/tcp es02 e32fcf67c1c3 docker.elastic.co/elasticsearch/elasticsearch:7.9.2 "/tini -- /usr/local…" 16 minutes ago Up 16 minutes 9200/tcp, 9300/tcp es03 60f489bf0dc8 docker.elastic.co/elasticsearch/elasticsearch:7.9.2 "/tini -- /usr/local…" 16 minutes ago Up 16 minutes (healthy) 0.0.0.0:9200->9200/tcp, 9300/tcp es01Twitter開発者登録
Twitter APIの開発者登録がまだの人は以下で登録
https://developer.twitter.com/en/apps/
以下を参考にして登録しました。
2020年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説 | 新宿のホームページ制作会社 ITTI(イッティ)
以下からアプリを追加し、consumer_key等を控えます
Logstash設定追加
フォルダ構成
以下のようなフォルダ構成になるように進めていきます。
$ tree --charset=C . |-- docker-compose.yml |-- logstash | |-- config | | |-- logstash.yml | | |-- pipelines.yml | `-- pipeline | `-- twitter.conflogstashの設定を以下のようにvolumesを追加する。
docker-compose.ymllogstash: image: docker.elastic.co/logstash/logstash:7.9.2 container_name: logstash volumes: - ./logstash/pipeline/:/usr/share/logstash/pipeline/ - ./logstash/config/:/usr/share/logstash/config/ networks: - elastic depends_on: - elasticsearch01 - elasticsearch02 - elasticsearch03 restart: always
./logstash/config/
フォルダを作成し、配下に以下を置く
- logstash.yml
./logstash/config/logstash.ymlpipeline.ordered: auto http.host: "0.0.0.0" xpack.monitoring.elasticsearch.hosts: ["http://es01:9200"]
- pipelines.yml
./logstash/config/pipelines.yml- pipeline.id: twitter_pipeline path.config: "/usr/share/logstash/pipeline/twitter.conf" queue.type: persistedパイプライン設定
- twitter.conf
./logstash/pipeline/twitter.confinput { twitter { consumer_key => "<your_consumer_key>" ← TwitterAPI管理画面で取得したキーを設定 consumer_secret => "<your_consumer_secret>" oauth_token => "your_oauth_token" oauth_token_secret => "your_oauth_token_secret" keywords => ["前澤さん", "前澤社長"] ignore_retweets => true full_tweet => true } } output { elasticsearch { hosts => ["http://es01:9200/"] index => "twitter_maezawa" } }参考:Sentiment analysis on twitter data with ELK | Clément’s blog
2020/10/11現在、「前澤さん」というキーワードがツイッターのトレンド入りになっていたので、Twitterから取得するキーワードに["前澤さん", "前澤社長"]を設定しています。
インデックス名も"twitter_maezawa"としてみました。実行
docker-compose up確認
Kibanaにアクセスします。
インデックス管理に以下のようにIndexが追加されていれば成功です。
http://localhost:5601/app/management/data/index_management/indices
インデックスパターンの作成
集まったデータを閲覧するために、インデックスパターンを作成します。
http://localhost:5601/app/management/kibana/indexPatterns/createインデックスパターン名に
twitter_maezawa
と入れて次のステップを押します。時間フィールドは@timestampを選択して、インデックスパターンを作成を押します。
データの詳細確認
Discover を開くとデータの詳細が確認できます。
可視化 (タグクラウド)
Visualizeメニューから作成
ダッシュボードに追加されました。
プラグインの追加
日本語形態素解析エンジン
せっかくなので、日本語形態素解析エンジン「kuromoji」と「icu」も入れてみる。
elasticsearchフォルダを作成し、その配下にDockerfileを作成します。
ついでにelasticsearch.ymlも読み込むようにしてみます。elasticsearch/DockerfileFROM docker.elastic.co/elasticsearch/elasticsearch:7.9.2 COPY ./config/elasticsearch.yml /usr/share/elasticsearch/config/elasticsearch.yml # remove plugin ↓既に入っているエラーが表示されたら有効にする # RUN elasticsearch-plugin remove analysis-icu # RUN elasticsearch-plugin remove analysis-kuromoji # install plugin RUN elasticsearch-plugin install analysis-icu RUN elasticsearch-plugin install analysis-kuromojidocker-compose.yml修正
docker-compose.ymlの
elasticsearch01: image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 ↓へ変更する elasticsearch01: build: ./elasticsearch/同様に、elasticsearch02、elasticsearch03も変更します。
elasticsearch.yml
elasticsearch/config
フォルダ配下にelasticsearch.yml
を作成します。中身はからっぽでOK. |-- docker-compose.yml |-- elasticsearch | |-- Dockerfile | `-- config | `-- elasticsearch.yml実行
build
docker-compose build起動
docker-compose up確認
各ノードのステータス確認
為念確認します。
$ curl -X GET "localhost:9200/_cat/nodes?v&pretty" ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.24.0.2 73 81 51 2.27 2.20 1.23 dilmrt - es03 172.24.0.3 58 81 52 2.27 2.20 1.23 dilmrt * es02 172.24.0.4 49 81 52 2.27 2.20 1.23 dilmrt - es01プラグイン確認
以下コマンドでプラグインが入っているかを確認します。
$ curl -X GET "http://localhost:9200/_nodes/es01/plugins?pretty" ...省略 }, "plugins" : [ { "name" : "analysis-icu", "version" : "7.9.2", "elasticsearch_version" : "7.9.2", "java_version" : "1.8", "description" : "The ICU Analysis plugin integrates the Lucene ICU module into Elasticsearch, adding ICU-related analysis components.", "classname" : "org.elasticsearch.plugin.analysis.icu.AnalysisICUPlugin", "extended_plugins" : [ ], "has_native_controller" : false }, { "name" : "analysis-kuromoji", "version" : "7.9.2", "elasticsearch_version" : "7.9.2", "java_version" : "1.8", "description" : "The Japanese (kuromoji) Analysis plugin integrates Lucene kuromoji analysis module into elasticsearch.", "classname" : "org.elasticsearch.plugin.analysis.kuromoji.AnalysisKuromojiPlugin", "extended_plugins" : [ ], "has_native_controller" : false } ],Elasticのフォーラムを可視化してみよう - Qiita
画面確認
ダッシュボードで確認します。
タグクラウドで可視化ができました。
docker compose ファイル
最終的には以下のようになりました。
version: "2.2" services: # 1st node port=9200 elasticsearch01: # image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 build: ./elasticsearch/ container_name: es01 environment: - node.name=es01 - cluster.name=es-docker-cluster - discovery.seed_hosts=es02,es03 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - elasticsearch_multinode_data01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - elastic healthcheck: interval: 20s retries: 10 test: curl -s http://localhost:9200/_cluster/health | grep -vq '"status":"red"' # 2nd node elasticsearch02: # image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 build: ./elasticsearch/ container_name: es02 environment: - node.name=es02 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es03 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - elasticsearch_multinode_data02:/usr/share/elasticsearch/data networks: - elastic # 3rd node elasticsearch03: # image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 build: ./elasticsearch/ container_name: es03 environment: - node.name=es03 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01,es02 - cluster.initial_master_nodes=es01,es02,es03 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - elasticsearch_multinode_data03:/usr/share/elasticsearch/data networks: - elastic # kibana kibana: image: docker.elastic.co/kibana/kibana:7.9.2 container_name: kibana ports: - "5601:5601" environment: - ELASTICSEARCH_HOSTS=http://es01:9200 # container_nameを参照する - "I18N_LOCALE=ja-JP" depends_on: - elasticsearch01 - elasticsearch02 - elasticsearch03 networks: - elastic healthcheck: interval: 10s retries: 20 test: curl --write-out 'HTTP %{http_code}' --fail --silent --output /dev/null http://localhost:5601/api/status restart: always # logstash logstash: image: docker.elastic.co/logstash/logstash:7.9.2 container_name: logstash volumes: - ./logstash/pipeline/:/usr/share/logstash/pipeline/ - ./logstash/config/:/usr/share/logstash/config/ networks: - elastic depends_on: - elasticsearch01 - elasticsearch02 - elasticsearch03 restart: always volumes: elasticsearch_multinode_data01: driver: local elasticsearch_multinode_data02: driver: local elasticsearch_multinode_data03: driver: local networks: elastic: driver: bridgeフォルダ階層
$ tree --charset=C . |-- docker-compose.yml |-- elasticsearch | |-- Dockerfile | `-- config | `-- elasticsearch.yml `-- logstash |-- config | |-- logstash.yml | |-- pipelines.yml `-- pipeline `-- twitter.conf後片付け
Elasticsearch終了
以下のコマンド
docker-compose downボリュームも消す
ボリュームも消す時は以下
docker-compose down --volumes全て消す
全て消す時は以下(コンテナ、イメージ、ボリュームそしてネットワーク、全て)
docker-compose down --rmi all --volumesボリュームの削除
docker volume prune参考
初めてのElasticsearch with Docker - Qiita
ElasticStack環境をDocker上で構築して、「コロナ」に関するツイートをタグクラウド化した話 - Qiita
- 投稿日:2020-10-11T17:44:49+09:00
[wip] サーバで、快適に自由にサーバサイド開発をする
概要
悩み
- エンジニアMac(MacBookPro:i7,Mem16GB)が火を吹いてて辛い
- オンライ会議ソフト(zoom)や、オンライホワイトボード(miro)など、重量級のソフトCPUを食い潰すようになった
- サーバサイドエンジニア(Rails/AWS)のMacでは各種開発用サーバをdockerで動かしているが、
もともと重かったdockerと相まって笑えるほど遅いやりたいこと
不安と期待
- 今までローカルで完結してた開発環境をリモートに切り離すにはいろいろ不安がある、 またはリモートだからこその期待がある。
- 快適に開発できるのか
- 「sshでつなげてVimで開発は流石に嫌だよ? VSCode 使いたい」
- 安全に開発できるのか
- 「通信ダダ漏れとかありえない」
- 自由にどこでも開発できるようになるのか
- 「カフエとかドーナツ屋さんで仕事したい」
- 自由にどんな端末でも開発できるようになるのか
- 「旅行にパソコン持って行きたくない!!!、ipadとかスマホで仕事したい!!」
- 無駄なコストが発生しないか
- 「使ってない月に、ン万円以上コストがかかるのは生理的に無理」
計画
フェーズ分け
いきなり全部やるとしんどそうだったので、以下のようにフェーズ分けしてます。
この記事は
- 現在進行形の「ここはこうしよう」、「ここはこうしようかな」というメモを晒している記事です。
構成設計・調査メモ
- 選定した内容、選定した意図、簡単な比較、設定内容など
構成: Phase1
- 概要
- 普段の開発環境から、開発用サーバ(docker)とVSCodeのCPU負荷をEC2に追い出すことができた
- コスト: 月$20ほど
- インフラ: 主にAWS(Route53,EC2など)を使用
- IDE: VSCode Remote Development
- 独自ドメイン
- 通信を暗号化(SSH/HTTPS)
リモートサーバ
- 必須条件
- SSH可能 -> Linux
- 公開できる -> ドメイン繋げられる(HTTPS)
- 歓迎条件
- コストを抑えられる、抑える手段がある
結論: AWS EC2
- 必要なときは性能のスケールアウトが可能
- ただし一旦停止は必要
- spot instanceでコストを抑えられる
- vCPU:2,Mem:4GB (t3.medium)で 月大体$15ほど
- (インスタンス稼働コスト+ストレージなど諸費用)
- この記事を書いた人が慣れているため * 仕事でAWS使ってる人多いすよね。。。
他の選択肢
- クラウド系
- GCP,Azureなど
- VPS系
- さくらのVPSなど
設定内容
- security groupの設定
- HTTPS: 「マイIP」で予め決まった拠点(オフィス、家など)のIPアドレスを設定する
- SSH: 「マイIP」で予め決まった拠点(オフィス、家など)のIPアドレスを設定する
リモート開発環境
- 必須条件
- コードの編集・実行ができる
- クライアントとサーバが暗号通信すること
- 歓迎条件
- プラグインが豊富で活発
- ブラウザだけで動くと尚良
結論: VSCode + Remote Developmentプラグイン
- VSCodeはいわずもがな2020年のサーバサイド開発のスタンダードになってるIDE
- Remote DevelopmentはSSHした先のLinuxサーバ上でIDEを実行できる機能
他の選択肢
- WebIDE系
暗号通信
- 必須条件
- WEBへアクセスできること(HTTPS)
- SSH
- 歓迎条件
- 手間を書けたくない
- コスト抑えたい
結論
freenom(独自ドメイン) + Route53(DNS) + Caddy(HTTPS Webサーバ)
- 特定のTLDなら無料でドメインが取れる
- Ref: freenomでドメインの取得
1 .tk オーストララシアにあるニュージーランドの領土であるトケラウ
2 .ml マリ
3 .ga ガボン
4 .cf 中央アフリカ
5 .gq 赤道ギニア
- ドメインのDNS管理
- 実質ほぼ無料
- Web サーバー
- ドメインがあれば自動でHTTPS通信になる
- basic 認証設定可能
他の選択肢
- VSCodeのポートファワーディング
- Ref: VSCode Remote Development + SSHトンネルで安全なWebアプリケーション開発
- 開発をポートフォワードが自由に行える環境:PCだけで行うのであれば構わないが、
iPadなどのモバイル端末ではこの手法が使えない- AWS ALB + AWS Route 53
- Route53+ACM+ALB+EC2でHTTPS接続するまで
- 高い: ALBだけで月$25ほど
[WIP] VPN
- 必須条件
- クライアントの通信内容を全て暗号化したい
- 新しい場所:新しいIPから接続するときに、ファイアウォール(SecurityGroup)をいちいち追加・削除したくない
- 歓迎条件
- 動作・通信速度が早い
- スマホ、タブレットなど様々な端末でも接続可能
- 例: iPad/android/ChromeOS
- 調査
- wireguardが良さげ
- 動作・通信が早く、インストールが簡単らしい
- Mac/Windows/Linux/iOS/Androidに対応
- https://www.wireguard.com/install/
- ChromeOSはAndroid用アプリが使えるらしい
[WIP] いつでも開発するために
- 必須条件
- Windows/Mac/ChromeOS/Android/iOSで稼働すること
歓迎条件
- ブラウザのみで稼働する
- OculusQuestとか独自カスタマイズ系のOSでも開発できると嬉しい
調査中
- VSCode Onlineに「開発環境サーバ」をSelf-hosted環境としてつなぐ
- 「Visual Studio Online」をSelf-hosted環境で使う
- △: サーバにVS Code自体のインストールが必要
- デスクトップ環境(Gnome/LXDE)のインストールが必要
- △: VSCode Online(codespaces)が GitHub Codespaceに統合されるようで、先行きがよくわからない
- code server
- サードパーティ製のVSCodeをWebサーバ化したもの
- △: 使えるプラグインが限定される
- Visual Studio Intellicodeとか使えない
[WIP]起動していないときにサーバを止める
- herokuみたいなことをしたい
- 「踏み台サーバ」へSSH portfowardingの接続要求が発生
- 認証完了
- 「踏み台サーバ」は「開発環境サーバ」を起動する
- 30秒ぐらい?
- 接続する
- 投稿日:2020-10-11T17:31:26+09:00
Rails新規開発時のスピードを極限まで高めるテンプレートを公開してみた
これはなに?
Rails の初期設定ってめんどくさくないですか?
rails new
してからの単純作業。せっかくスピード感があるフレームワークなのに最初の単純作業はほぼ同じことを毎回していますし、地味に時間もかかるので嫌でした。
今や Docker を使ってサクッと環境を構築するのは当然ですが、それでもやっぱり面倒。特に、
- RSpecのセットアップ
- devise の設定
- お決まりの Gem を入れる手間
この辺が嫌いでしたし、皆さんにもやって欲しくない!!
そうだ、テンプレートを作ろう
んで、どうせなら皆さんにも公開して是非使って頂こう、あわよくば改善案も貰ってしまおうという非常に厚かましい企画となっております。
ちなみに他にもテンプレートを公開されている方はいらっしゃいましたが少し古くなっていますし、Docker を使っていないことも多かったです。今回は Docker を使って爆速で Rails 開発を始められるテンプレートを丸ごと公開します!!
バージョンなど
- ruby:2.6.6
- rails 6.0.3
- postgresql:12.3
こららのモダンな環境をサクッと構築してすぐに開発に取り掛かれます!!
どんな人におすすめか
主に個人開発や簡単なRailsアプリをサクッと作りたい場面で有用だと思います。
逆にメジャーとは言え、使わない Gem も入ることになると思うので(最初に取り除けば全く問題ありませんが)、スピード重視じゃない場合には合わないかもしれません。行った設定等の解説
リポジトリはこちらです ?
https://github.com/tatsuro-m/rails_base_app基本的には README に手順が書いてあるので問題なく使えると思います。
手順が多いようにも見えますが、本当にすぐに終わります。
- devise の初期設定(rails generate devise:install を実行。viewの生成はしていない。)
- rspec のセットアップ(システムスペックを含む)
test
ディレクトリの削除(使わないので)database.yml
の編集(postgresコンテナに設定した環境変数と合わせてあります).env
の.gitignore
への追加webpack-dev-server
の設定こんな感じで Docker イメージをビルドして起動 + 最低限必要なコマンドを何個か打つ
ぐらいでサクッと Web アプリケーションの開発が始められると思います。んで、 Gem 何入れたの?
Gemfiilegem 'devise' gem 'devise-i18n' gem 'dotenv-rails' gem 'ransack' gem 'kaminari' gem 'carrierwave' gem 'mini_magick' gem 'fog-aws' gem 'rails-i18n' gem 'draper' gem 'pundit'デフォルトのものに加えて、こちら入れました。どれも定番ですね。必要な Gem があれば Gemfile に書き込んでから
docker-compose build
でももちろん大丈夫です。今後の改善案など
- CircleCI で rubocop と RSpec を走らせる設定ファイルはもう定番だし入れても良いかもしれない(不要なら消せば良いだけですし) 。。。
- rails が動いているコンテナの中に SystemSpec 起動用の chrome を入れているけど、コンテナを分けるべきかもしれない
他にも何かあればコメントください。PR もお待ちしてます!!
どなたかのお役に立てたら幸いです。
- 投稿日:2020-10-11T16:22:46+09:00
docker-slim前後のdockerfileの差異を比較
手順
# サンプルnode.jsアプリのDockerイメージを作成する ~ $ git clone https://github.com/docker-slim/examples.git # node_ubuntuのDockerfileがあるディレクトリに移動 ~ $ cd examples/node_ubuntu/ # Dockerfileをビルドし,イメージを作成 ~ $ docker build -t my/sample-node-app . # 作成したイメージに対して,docker-slimを適用する ~ $ docker-slim build my/sample-node-appサイズ削減度合いは??
~ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE my/sample-node-app.slim latest b2c7843a52fa 3 hours ago 14MB my/sample-node-app latest 3c6ddc217be2 4 hours ago 414MB下が元のイメージ,上が最適化した後のイメージです.
docker-slimで最適化したイメージには「.slim」が後ろに追加されるようです.
サイズは414MBから14MBまで小さくなってます.
何が起きてるのか。。dockerfileの比較
- docker-slimを適応したイメージのdockerfileは以下のディレクトリにある
- [docker-slim directory]/.images/[YOUR_APP_IMAGE_ID]/artifacts/
Dockerfile-beforeFROM ubuntu:14.04 RUN apt-get update && \ apt-get install -y curl software-properties-common python-software-properties && \ add-apt-repository ppa:chris-lea/node.js && \ apt-get update && \ apt-get install -y build-essential \ nodejs && \ mkdir -p /opt/my/service COPY service /opt/my/service WORKDIR /opt/my/service RUN npm install EXPOSE 1300 ENTRYPOINT ["node","/opt/my/service/server.js"]Dockerfile-afterFROM scratch LABEL docker-slim.version="darwin|Transformer|1.32.0|10b628fc3cd9f903237b9c31a6aba5ac4e6bc9c8|2020-08-24_06:14:32AM" ENV PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ADD files.tar / WORKDIR /opt/my/service EXPOSE 1300/tcp ENTRYPOINT ["node","/opt/my/service/server.js"]FROM句が ubuntu:14.04 から scratch に変わっています.
FROM scratch はベースが無いということを意味していて,ベースOSの部分から書いているということを示しているようです.
OS部分は ADD ubuntuのファイルシステムを圧縮したものだと想定されるfiles.tarが担っているみたい.参考リンク
docker-slimを使ってDockerイメージのダイエット
DockerSlim 使ってみた
- 投稿日:2020-10-11T14:31:03+09:00
OpenLDAPサーバをDockerで立てる
これはなに?
OpenLDAPサーバをDockerで立てます。
やりかた
拙作ではありますが、Docker Hubにあるイメージをご利用ください。
docker pull sengokyu/openldap
ベースとなるDNを指定して起動します。今回は
dc=example,dc=com
にしています。docker run -d -p 389:389 -e SUFFIX=dc=example,dc=com sengokyu/openldap
Apache Directory Studioから接続
Apache Directory Studioを起動します。
LDAP > New Connection... メニューを選択します。
Hostnameにlocalhostと入力して、Nextをクリックします。
Bind DN or userとパスワードを入力して、Finishをクリックします。
Bind DNにはRoot DNを入力します。
Root DNとパスワードが未指定の場合、以下の値で起動するようにしています。DN
cn=root,(指定したSUFFIX)
(上の例では、cn=root,dc=example,dc=com
になります)
パスワード
slappasswd
接続できました。
Dockerイメージについて
Fedoraをベースに作成してます。
2020年10月時点では、以下のバージョンになります。
- Fedora release 32
- OpenLDAP 2.4.47
- 投稿日:2020-10-11T13:57:27+09:00
AWSにdockerを使用したlaravelをデプロイ④
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
EC2インスタンス内にGitをクローン
Gitのリモートレポジトリにある任意のlaravelプロジェクトをEC2インスタンス内にクローンします。
root@ip:/home/ubuntu# git clone [任意のレポジトリURL]Dockerコンテナの立ち上げ
cloneした自分のフォルダ(docker-compose.ymlのある)へ移動し、コンテナを立ち上げます。
root@ip:/home/ubuntu/awstest# docker-compose up -d root@ip:/home/ubuntu/awstest# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------ awstest_app_1 docker-php-entrypoint php-fpm Up 9000/tcp awstest_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp awstest_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:10080->80/tcpこの様に立ち上がればOKです。
苦戦した箇所
docker-compose.ymlのバージョンエラーが出てエラー内容通りroot@ip-172-31-35-36:/home/ubuntu/awstest# vi docker-compose.yml version: "3.3" ←3.8から3.3に変更とversionを変更しました。
さらにgitへのpushが間違っていた為docker関連のファイルが無く立ち上がりませんでした。
こんなミスするヤツ自分以外いないと思いますが万が一同じ人がいたらファイルの確認をしてみて下さい。Laravel環境設定
Laravelが使えるように環境設定をしていきます。
appコンテナに入ります。root@ip:/home/ubuntu/awstest# docker-compose exec app bashLaravelプロジェクト内の環境設定を行う.envファイルは.gitignoreにて指定されているため、Gitリポジトリにプッシュされません。
なので再度作成します。root@:/work# cp .env.example .env.envを作成したらcomposer install、そしてAPP_KEYも発行します。
root@:/work# composer install root@:/work# php artisan key:generateプロジェクト内の権限変更
プロジェクト内のファイルに対する権限を変更します。
通常では storage/logs と vendor の権限を変更すればOKみたいです。
ここでもエラーが起き少し苦戦しました。
file_put_contentsエラーでViewが開かない
root@:/work# chmod 777 storage/logs vendor root@:/work# chmod 777 storage/framework/views root@:/work# chmod 777 storage/framework/sessionsここまでやってようやくTOPページが開ました。
http://[設定したElastic IPアドレス]:10080にブラウザからアクセスします。
この様に表示されればOKです。
前回の記事
AWSにdockerを使用したlaravelをデプロイ③**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T13:57:27+09:00
AWSにEC2上にdockerを使用したlaravelをデプロイ④
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
EC2インスタンス内にGitをクローン
Gitのリモートレポジトリにある任意のlaravelプロジェクトをEC2インスタンス内にクローンします。
root@ip:/home/ubuntu# git clone [任意のレポジトリURL]Dockerコンテナの立ち上げ
cloneした自分のフォルダ(docker-compose.ymlのある)へ移動し、コンテナを立ち上げます。
root@ip:/home/ubuntu/awstest# docker-compose up -d root@ip:/home/ubuntu/awstest# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------ awstest_app_1 docker-php-entrypoint php-fpm Up 9000/tcp awstest_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp awstest_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:10080->80/tcpこの様に立ち上がればOKです。
苦戦した箇所
docker-compose.ymlのバージョンエラーが出てエラー内容通りroot@ip-172-31-35-36:/home/ubuntu/awstest# vi docker-compose.yml version: "3.3" ←3.8から3.3に変更とversionを変更しました。
さらにgitへのpushが間違っていた為docker関連のファイルが無く立ち上がりませんでした。
こんなミスするヤツ自分以外いないと思いますが万が一同じ人がいたらファイルの確認をしてみて下さい。Laravel環境設定
Laravelが使えるように環境設定をしていきます。
appコンテナに入ります。root@ip:/home/ubuntu/awstest# docker-compose exec app bashLaravelプロジェクト内の環境設定を行う.envファイルは.gitignoreにて指定されているため、Gitリポジトリにプッシュされません。
なので再度作成します。root@:/work# cp .env.example .env.envを作成したらcomposer install、そしてAPP_KEYも発行します。
root@:/work# composer install root@:/work# php artisan key:generateプロジェクト内の権限変更
プロジェクト内のファイルに対する権限を変更します。
通常では storage/logs と vendor の権限を変更すればOKみたいです。
ここでもエラーが起き少し苦戦しました。
file_put_contentsエラーでViewが開かない
root@:/work# chmod 777 storage/logs vendor root@:/work# chmod 777 storage/framework/views root@:/work# chmod 777 storage/framework/sessionsここまでやってようやくTOPページが開ました。
http://[設定したElastic IPアドレス]:10080にブラウザからアクセスします。
この様に表示されればOKです。
マイグレーションを実行する
root@:/work# php artisan migrate root@:/work# php aritsan db:seedここまでやればローカルで作成したアプリが動くと思います。
以上で「AWSにEC2上にdockerを使用したlaravelをデプロイ」を終了させていただきます。
ありがとうございました。前回の記事
AWSにEC2上にdockerを使用したlaravelをデプロイ③**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T13:57:27+09:00
AWSにEC2上にdockerを使用したlaravelをデプロイ④(gitクローン〜デプロイ、マイグレーション)
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
EC2インスタンス内にGitをクローン
Gitのリモートレポジトリにある任意のlaravelプロジェクトをEC2インスタンス内にクローンします。
root@ip:/home/ubuntu# git clone [任意のレポジトリURL]Dockerコンテナの立ち上げ
cloneした自分のフォルダ(docker-compose.ymlのある)へ移動し、コンテナを立ち上げます。
root@ip:/home/ubuntu/awstest# docker-compose up -d root@ip:/home/ubuntu/awstest# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------ awstest_app_1 docker-php-entrypoint php-fpm Up 9000/tcp awstest_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp awstest_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:10080->80/tcpこの様に立ち上がればOKです。
苦戦した箇所
docker-compose.ymlのバージョンエラーが出てエラー内容通りroot@ip-172-31-35-36:/home/ubuntu/awstest# vi docker-compose.yml version: "3.3" ←3.8から3.3に変更とversionを変更しました。
さらにgitへのpushが間違っていた為docker関連のファイルが無く立ち上がりませんでした。
こんなミスするヤツ自分以外いないと思いますが万が一同じ人がいたらファイルの確認をしてみて下さい。Laravel環境設定
Laravelが使えるように環境設定をしていきます。
appコンテナに入ります。root@ip:/home/ubuntu/awstest# docker-compose exec app bashLaravelプロジェクト内の環境設定を行う.envファイルは.gitignoreにて指定されているため、Gitリポジトリにプッシュされません。
なので再度作成します。root@:/work# cp .env.example .env.envを作成したらcomposer install、そしてAPP_KEYも発行します。
root@:/work# composer install root@:/work# php artisan key:generateプロジェクト内の権限変更
プロジェクト内のファイルに対する権限を変更します。
通常では storage/logs と vendor の権限を変更すればOKみたいです。
ここでもエラーが起き少し苦戦しました。
file_put_contentsエラーでViewが開かない
root@:/work# chmod 777 storage/logs vendor root@:/work# chmod 777 storage/framework/views root@:/work# chmod 777 storage/framework/sessionsここまでやってようやくTOPページが開ました。
http://[設定したElastic IPアドレス]:10080にブラウザからアクセスします。
この様に表示されればOKです。
マイグレーションを実行する
root@:/work# php artisan migrate root@:/work# php aritsan db:seedここまでやればローカルで作成したアプリが動くと思います。
以上で「AWSにEC2上にdockerを使用したlaravelをデプロイ」を終了させていただきます。
ありがとうございました。前回の記事
AWSにEC2上にdockerを使用したlaravelをデプロイ③**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T13:15:15+09:00
KUSANAGI Runs on Dockerでコンテナイメージをアップデートする
前回の記事『VultrでKUSANAGI Runs on Dockerが動くまで(その4)』ではVPC環境であるVultrにKUSANAGI RoD環境を構築し、リバプロサーバとしてhttps-portal環境を作りました。
今回はKUSANAGI Runs on Dockerのコンテナイメージをアップデートしたいと思います。KUSANAGI RODで使っているコンテナのうち以下コンテナでアップデートがありました。
docker-compose.ymlファイルを更新します。
docker-compose.ymlversion: '3' networks: default: driver: bridge driver_opts: com.docker.network.driver.mtu: 9000 shared-network: external: true services: httpd: container_name: kusanagi01_httpd #image: primestrategy/kusanagi-nginx:1.17.9-r0 image: primestrategy/kusanagi-nginx:1.19.3-r0 restart: always env_file: - .kusanagi - .kusanagi.httpd volumes: - kusanagi:/home/kusanagi #- kusanagi:/etc/letsencrypt #- kusanagi:/var/www/html/.well-known - ./nginx/nginx.conf:/etc/nginx/nginx.conf #ports: #- "8080:8080" #- "8443:8443" extra_hosts: - "fqdn:127.0.0.1" networks: - shared-network #certbot: #container_name: kusanagi01_certbot #image: certbot/certbot:v1.6.0 #restart: always #network_mode: "service:httpd" #env_file: #- .kusanagi.httpd #volumes: #- kusanagi:/var/www/html/.well-known #- kusanagi:/etc/letsencrypt #command: #- --version ## CONFIG config: container_name: kusanagi01_config restart: always build: context: ./wpcli user: "1000:1001" env_file: - .kusanagi - .kusanagi.wp - .kusanagi.db volumes: - database:/var/run/mysqld - kusanagi:/home/kusanagi command: wp --version php: container_name: kusanagi01_php #image: primestrategy/kusanagi-php:7.4.8-r0 image: primestrategy/kusanagi-php:7.4.9-r0 restart: always env_file: - .kusanagi - .kusanagi.php - .kusanagi.mail network_mode: "service:httpd" volumes: - database:/var/run/mysqld - kusanagi:/home/kusanagi - ./php/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini ## MYSQL db: container_name: kusanagi01_db #image: mariadb:10.5.4-focal image: mariadb:10.5.6-focal restart: always user: "999:999" env_file: - .kusanagi.mysql network_mode: "service:httpd" volumes: - database:/var/run/mysqld - database:/var/lib/mysql ## FTPD ftp: container_name: kusanagi01_ftp image: primestrategy/kusanagi-ftpd:1.0.2-r1 restart: always network_mode: "service:httpd" env_file: - .kusanagi - .kusanagi.wp volumes: - kusanagi:/home/kusanagi volumes: kusanagi: database:dockerコマンドでコンテナを再作成します。
$ docker-compose stop $ docker-compose up -d Pulling httpd (primestrategy/kusanagi-nginx:1.19.3-r0)... 1.19.3-r0: Pulling from primestrategy/kusanagi-nginx df20fa9351a1: Already exists 5af32d8d47ac: Pull complete e55c96c86184: Pull complete 936d68b47fc1: Pull complete a8c682723ffa: Pull complete 03145aaddb69: Pull complete 497c91cb4efa: Pull complete 639014dd9611: Pull complete 804c2b55bd45: Pull complete 8ba2747f59ab: Pull complete 2d3ef1c004b5: Pull complete 151010cd7bea: Pull complete 7368eee41ec2: Pull complete 054bb2aec8f7: Pull complete c2cbc49740f5: Pull complete Digest: sha256:00c7d727578796793afb9e02c006f631119f5f778c304b71d71308dc81661d8c Status: Downloaded newer image for primestrategy/kusanagi-nginx:1.19.3-r0 Pulling php (primestrategy/kusanagi-php:7.4.9-r0)... 7.4.9-r0: Pulling from primestrategy/kusanagi-php df20fa9351a1: Already exists b358d6dbbdff: Already exists 0232d962484c: Already exists 0c1d3ac04d2a: Already exists 69251dafcb2d: Pull complete f1f538119c59: Pull complete cfbff98e6534: Pull complete c2aadec4cc8c: Pull complete b2ed7d8627c3: Pull complete a5f68329b27f: Pull complete e2a454f2222e: Pull complete f3b64d79d270: Pull complete 11d91a2e79d9: Pull complete 86b38ba94154: Pull complete 928fdca444e9: Pull complete 37da8ddee44c: Pull complete de5ab4f13129: Pull complete 7b2c6c5559bf: Pull complete be5013ba038f: Pull complete 45921131dc11: Pull complete d84b8c09a0dc: Pull complete Digest: sha256:954b368151a8d255411e0722c246976dd79bb9cb2438584cca253978c542e4bc Status: Downloaded newer image for primestrategy/kusanagi-php:7.4.9-r0 Pulling db (mariadb:10.5.6-focal)... 10.5.6-focal: Pulling from library/mariadb d72e567cc804: Pull complete 0f3630e5ff08: Pull complete b6a83d81d1f4: Pull complete 4bf2111ecf0e: Pull complete 9572d64978a0: Pull complete bcc9953bffb3: Pull complete de429570dda5: Pull complete 3652bc6ea9f9: Pull complete 6e4bf87041c8: Pull complete 96e489d6af27: Pull complete baaf018282fc: Pull complete 1cca1ca0b2da: Pull complete Digest: sha256:3e6a64c089460fb3403b5d3458ace9710d0be94f3dfdaaaeb74945dbb8e5671c Status: Downloaded newer image for mariadb:10.5.6-focal Starting kusanagi01_config ... done Recreating kusanagi01_httpd ... done Recreating kusanagi01_php ... done Recreating kusanagi01_ftp ... done Recreating kusanagi01_db ... done $ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------ kusanagi01_config docker-entrypoint.sh wp -- ... Restarting kusanagi01_db docker-entrypoint.sh mysqld Up kusanagi01_ftp /bin/sh -c /docker-entrypo ... Up kusanagi01_httpd /docker-entrypoint.sh /usr ... Up 8080/tcp, 8443/tcp kusanagi01_php /usr/local/bin/docker-entr ... Up
- 投稿日:2020-10-11T12:50:15+09:00
Pari gp containerを使ってみた
はじめに
PARI/GPについては
https://pari.math.u-bordeaux.fr/pub/pari/manuals/2.3.5/users.pdf
の1.1 Introduction
が参考になります。
ここではDockerでPARI/GPを利用する方法について書きます。Dockerコンテナを起動
オプション-itでコンテナに入ることができます。
以下のようにgp
をつけることで、コンテナ起動直後にPARI/GPを起動します。docker run -it pascalmolin/parigp-small gpまた
pascalmolin/parigp-full
もありますが、今回はsmall
です。
以下のようにPARI/GPが起動します。
試しに1 + 1を計算しています。GP/PARI CALCULATOR Version 2.11.4 (released) amd64 running linux (x86-64/GMP-6.2.0 kernel) 64-bit version compiled: Jul 8 2020, gcc version 9.3.0 (Alpine 9.3.0) threading engine: single (readline v8.0 enabled, extended help not enabled) Copyright (C) 2000-2018 The PARI Group PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER. Type ? for help, \q to quit. Type ?17 for how to get moral (and possibly technical) support. parisize = 8000000, primelimit = 500000 ? 1 + 1 %1 = 2停止したいときは
\q
コマンドを入力します。? 1 + 1 %1 = 2 ? \q Goodbye!再度コンテナに入るには、まず起動したいCONTAINER IDを見つけます。
docker ps -a
は停止しているコンテナも含めて、一覧を表示します。docker ps -a以下のように一覧が表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1831fe3cb55f pascalmolin/parigp-small "gp" 3 minutes ago Exited (0) About a minute agoコンテナを再起動します。
docker restart 1831fe3cb55fコンテナに入ります。
docker exec -it 1831fe3cb55f shファイル読み込み、書き込み
tmpディレクトリに移動し、そこにファイルを作ってみます。
/ # cd tmp以下のような
test.gp
を作成しました。/tmp # cat test.gp forprime(p = 1, 20, write("output.txt", p))以下のように
gp
コマンドでPARI/GPを起動します。/tmp # gpファイルを実行します。
? \r test.gpPARI/GPを停止し、作成された
output.txt
を見てみます。/tmp # cat output.txt 2 3 5 7 11 13 17 19参考記事
- Git hub
https://github.com/mastermic/pari-docker- PARI/GP user's guide
https://pari.math.u-bordeaux.fr/pub/pari/manuals/2.3.5/users.pdf
- 投稿日:2020-10-11T12:44:24+09:00
AWSにdockerを使用したlaravelをデプロイ③
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前回の記事
AWSにdockerを使用したlaravelをデプロイ②EC2インスタンスにSSHでアクセスする
1:EC2ダッシュボード作成したインスタンスに入りの右上の「接続」をクリック
2:インスタンスに接続コード確認
「SSH クライアント」をクリック
3:EC2インスタンスにSSHでアクセス
ターミナルを起動しchmod 400 test-docker.pem ssh -i "test-docker.pem" ubuntu@ec2-52-198-43-4.ap-northeast1.compute.amazonaws.comtest-docker.pemの部分はダウンロードし格納したディレクトリを指定して下さい。
Gitのインストール
EC2内への変更にはスーパーユーザーで行わないといけないので「sudo」を打つか
ubuntu@ip:~$ sudo su root@ip:/home/ubuntu#行頭にある「$(ドル)」が一般ユーザーを表し、「#(シャープ)」がrootユーザーを表します。
1:aptの更新
root@ip:/home/ubuntu# apt-get update2:Gitのインストール
Gitのインストールと初期設定を行います。#gitインストール root@ip:/home/ubuntu# apt-get install git #git初期設定 root@ip:/home/ubuntu# git config --global user.name [任意のユーザー名] root@ip:/home/ubuntu# git config --global user.email [任意のemailアドレス]Docker,Docker-composeのインストール
ubuntu用の手順をDocker公式ページに従います。
Docker,Docker-composeのインストールを行います。root@ip:/home/ubuntu# apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common root@ip:/home/ubuntu# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - root@ip:/home/ubuntu# apt-key fingerprint 0EBFCD88 root@ip:/home/ubuntu# add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" root@ip:/home/ubuntu# apt-get install docker-ce docker-ce-cli containerd.io #docker-composeのインストール root@ip:/home/ubuntu# apt install docker-compose前回の記事
AWSにdockerを使用したlaravelをデプロイ②続きはこちら
**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T12:44:24+09:00
AWSにEC2上にdockerを使用したlaravelをデプロイ③
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前回の記事
AWSにdockerを使用したlaravelをデプロイ②EC2インスタンスにSSHでアクセスする
1:EC2ダッシュボード作成したインスタンスに入りの右上の「接続」をクリック
2:インスタンスに接続コード確認
「SSH クライアント」をクリック
3:EC2インスタンスにSSHでアクセス
ターミナルを起動しchmod 400 test-docker.pem ssh -i "test-docker.pem" ubuntu@ec2-52-198-43-4.ap-northeast1.compute.amazonaws.comtest-docker.pemの部分はダウンロードし格納したディレクトリを指定して下さい。
Gitのインストール
EC2内への変更にはスーパーユーザーで行わないといけないので「sudo」を打つか
ubuntu@ip:~$ sudo su root@ip:/home/ubuntu#行頭にある「$(ドル)」が一般ユーザーを表し、「#(シャープ)」がrootユーザーを表します。
1:aptの更新
root@ip:/home/ubuntu# apt-get update2:Gitのインストール
Gitのインストールと初期設定を行います。#gitインストール root@ip:/home/ubuntu# apt-get install git #git初期設定 root@ip:/home/ubuntu# git config --global user.name [任意のユーザー名] root@ip:/home/ubuntu# git config --global user.email [任意のemailアドレス]Docker,Docker-composeのインストール
ubuntu用の手順をDocker公式ページに従います。
Docker,Docker-composeのインストールを行います。root@ip:/home/ubuntu# apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common root@ip:/home/ubuntu# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - root@ip:/home/ubuntu# apt-key fingerprint 0EBFCD88 root@ip:/home/ubuntu# add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" root@ip:/home/ubuntu# apt-get install docker-ce docker-ce-cli containerd.io #docker-composeのインストール root@ip:/home/ubuntu# apt install docker-compose前回の記事
AWSにEC2上にdockerを使用したlaravelをデプロイ②続きはこちら
AWSにdockerを使用したlaravelをデプロイ④**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T12:44:24+09:00
AWSにEC2上にdockerを使用したlaravelをデプロイ③(SSH接続〜Docke-composeインストール)
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前回の記事
AWSにdockerを使用したlaravelをデプロイ②EC2インスタンスにSSHでアクセスする
1:EC2ダッシュボード作成したインスタンスに入りの右上の「接続」をクリック
2:インスタンスに接続コード確認
「SSH クライアント」をクリック
3:EC2インスタンスにSSHでアクセス
ターミナルを起動しchmod 400 test-docker.pem ssh -i "test-docker.pem" ubuntu@ec2-52-198-43-4.ap-northeast1.compute.amazonaws.comtest-docker.pemの部分はダウンロードし格納したディレクトリを指定して下さい。
Gitのインストール
EC2内への変更にはスーパーユーザーで行わないといけないので「sudo」を打つか
ubuntu@ip:~$ sudo su root@ip:/home/ubuntu#行頭にある「$(ドル)」が一般ユーザーを表し、「#(シャープ)」がrootユーザーを表します。
1:aptの更新
root@ip:/home/ubuntu# apt-get update2:Gitのインストール
Gitのインストールと初期設定を行います。#gitインストール root@ip:/home/ubuntu# apt-get install git #git初期設定 root@ip:/home/ubuntu# git config --global user.name [任意のユーザー名] root@ip:/home/ubuntu# git config --global user.email [任意のemailアドレス]Docker,Docker-composeのインストール
ubuntu用の手順をDocker公式ページに従います。
Docker,Docker-composeのインストールを行います。root@ip:/home/ubuntu# apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common root@ip:/home/ubuntu# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - root@ip:/home/ubuntu# apt-key fingerprint 0EBFCD88 root@ip:/home/ubuntu# add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" root@ip:/home/ubuntu# apt-get install docker-ce docker-ce-cli containerd.io #docker-composeのインストール root@ip:/home/ubuntu# apt install docker-compose前回の記事
AWSにEC2上にdockerを使用したlaravelをデプロイ②続きはこちら
AWSにdockerを使用したlaravelをデプロイ④**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T11:58:23+09:00
AWSにEC2上でdockerを使用したlaravelをデプロイ②
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前回の記事
AWSにdockerを使用したlaravelをデプロイ①Elastic IP取得
1:Elastic IPを開く
EC2ダッシュボードの左側のメニューの「Elastic IP」を選択。
「Elastic IPの割り当て」をクリック。
4:EC2インスタンスに紐づける
「Elastic IP アドレスの関連付け」をクリック
5:インスタンスを選択
「インスタンス」に先ほど作成したEC2インスタンスを選択する。
「関連付ける」をクリック。
これで作成したインスタンスにElastic IPが紐付けられました。
前回の記事
AWSにEC2上にdockerを使用したlaravelをデプロイ①続きはこちら
AWSにEC2上にdockerを使用したlaravelをデプロイ③**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T11:58:23+09:00
AWSにEC2上でdockerを使用したlaravelをデプロイ②(Elastic IP取得〜紐付け)
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前回の記事
AWSにdockerを使用したlaravelをデプロイ①Elastic IP取得
1:Elastic IPを開く
EC2ダッシュボードの左側のメニューの「Elastic IP」を選択。
「Elastic IPの割り当て」をクリック。
4:EC2インスタンスに紐づける
「Elastic IP アドレスの関連付け」をクリック
5:インスタンスを選択
「インスタンス」に先ほど作成したEC2インスタンスを選択する。
「関連付ける」をクリック。
これで作成したインスタンスにElastic IPが紐付けられました。
前回の記事
AWSにEC2上にdockerを使用したlaravelをデプロイ①続きはこちら
AWSにEC2上にdockerを使用したlaravelをデプロイ③**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T11:58:23+09:00
AWSにdockerを使用したlaravelをデプロイ②
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前回の記事
AWSにdockerを使用したlaravelをデプロイ①Elastic IP取得
1:Elastic IPを開く
EC2ダッシュボードの左側のメニューの「Elastic IP」を選択。
「Elastic IPの割り当て」をクリック。
4:EC2インスタンスに紐づける
「Elastic IP アドレスの関連付け」をクリック
5:インスタンスを選択
「インスタンス」に先ほど作成したEC2インスタンスを選択する。
「関連付ける」をクリック。
これで作成したインスタンスにElastic IPが紐付けられました。
前回の記事
AWSにdockerを使用したlaravelをデプロイ①続きはこちら
AWSにdockerを使用したlaravelをデプロイ③**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T11:35:21+09:00
Docker-composeコマンド メモ
- 投稿日:2020-10-11T11:31:54+09:00
AWSにEC2上でdockerを使用したlaravelをデプロイ①
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前提条件
・Mac基準になります。
・gitにlaravelアプリがpushされている事。
・dockerがインストールされている事。
・AWSにログイン出来る事。
構築環境
・php7.4
・mysql8.0
・laravel6dockerの構築は
@ucan-labさんの記事
【初心者向け】20分でLaravel開発環境を爆速構築するDockerハンズオン
を参考に作成しました。
変更点
version: "3.3" ←変更 services: app: build: ./infra/php volumes: - ./backend:/work web: image: nginx:1.18-alpine ports: - 10080:80 volumes: - ./backend:/work - ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf working_dir: /work
EC2インスタンス作成
画面右上のリージョンは東京に指定して下さい。
画面左上のサービスを開きEC2を選択。
探せない場合はすべてのサーピスから「EC2」と打ち込んで検索して下さい。
EC2をクリックしアクセス。1:Webサーバーの作成
インスタンスを起動をクリックし、選択画面が出たらそこもインスタンスの起動をクリック。
2:AMIを選択
AMIは「ubuntu 18.04」を選択。3:インスタンスタイプの選択
新規登録から1年間無料の利用枠「t2.micro」を選択。
6:タグの追加
タグを追加し値を任意の名前を付けます。
今回は「awstest」という名前を付けました。
1つ作ったら次へ。
7:セキュリティーグループ設定
任意のセキュリティーグループ名、説明を設定する。
今回は「test-docker」という名前を付けました。
ルールの追加を行い「HTTP」「HTTPS」「カスタム TCP ルール」を追加。
カスタムTCPのみ ポート範囲を指定。
今回は「10080」を設定します。
ソースには「カスタム」「0.0.0.0/0, ::/0」を設定。
全て設定し終わってら次へ。
キーペアの作成
インスタンスの「起動」ボタンをクリックすると、キーペアの作成画面が表示されます。
初めてEC2インスタンスを作成する方は
新しいキーペアの作成を選択し、任意の名前をキーペア名につけます。
キーペアのダウンロードを必ず行って下さい。
そしてインスタンス作成をクリック。作成したインスタンスの確認
EC2の画面に戻ってみると作成したインスタンスがある事が確認できます。
Nameのところにタグの項目で付けた名前があります。
「実行中」「2/2のチェックに合格しました」となったら完了です。
続き
続きはこちら
AWSにEC2上でdockerを使用したlaravelをデプロイ②**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T11:31:54+09:00
AWSにEC2上でdockerを使用したlaravelをデプロイ①(EC2インスタンス作成)
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前提条件
・Mac基準になります。
・gitにlaravelアプリがpushされている事。
・dockerがインストールされている事。
・AWSにログイン出来る事。
構築環境
・php7.4
・mysql8.0
・laravel6dockerの構築は
@ucan-labさんの記事
【初心者向け】20分でLaravel開発環境を爆速構築するDockerハンズオン
を参考に作成しました。
変更点
version: "3.3" ←変更 services: app: build: ./infra/php volumes: - ./backend:/work web: image: nginx:1.18-alpine ports: - 10080:80 volumes: - ./backend:/work - ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf working_dir: /work
EC2インスタンス作成
画面右上のリージョンは東京に指定して下さい。
画面左上のサービスを開きEC2を選択。
探せない場合はすべてのサーピスから「EC2」と打ち込んで検索して下さい。
EC2をクリックしアクセス。1:Webサーバーの作成
インスタンスを起動をクリックし、選択画面が出たらそこもインスタンスの起動をクリック。
2:AMIを選択
AMIは「ubuntu 18.04」を選択。3:インスタンスタイプの選択
新規登録から1年間無料の利用枠「t2.micro」を選択。
6:タグの追加
タグを追加し値を任意の名前を付けます。
今回は「awstest」という名前を付けました。
1つ作ったら次へ。
7:セキュリティーグループ設定
任意のセキュリティーグループ名、説明を設定する。
今回は「test-docker」という名前を付けました。
ルールの追加を行い「HTTP」「HTTPS」「カスタム TCP ルール」を追加。
カスタムTCPのみ ポート範囲を指定。
今回は「10080」を設定します。
ソースには「カスタム」「0.0.0.0/0, ::/0」を設定。
全て設定し終わってら次へ。
キーペアの作成
インスタンスの「起動」ボタンをクリックすると、キーペアの作成画面が表示されます。
初めてEC2インスタンスを作成する方は
新しいキーペアの作成を選択し、任意の名前をキーペア名につけます。
キーペアのダウンロードを必ず行って下さい。
そしてインスタンス作成をクリック。作成したインスタンスの確認
EC2の画面に戻ってみると作成したインスタンスがある事が確認できます。
Nameのところにタグの項目で付けた名前があります。
「実行中」「2/2のチェックに合格しました」となったら完了です。
続き
続きはこちら
AWSにEC2上でdockerを使用したlaravelをデプロイ②**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T11:31:54+09:00
AWSにdockerを使用したlaravelをデプロイ①
概要
・自分が詰まったポイントと同じポイントで詰まった方向けにAWSにlaravel/dockerをデプロイするまでの過程を書いていきます。
前提条件
・Mac基準になります。
・gitにlaravelアプリがpushされている事。
・dockerがインストールされている事。
・AWSにログイン出来る事。
構築環境
・php7.4
・mysql8.0
・laravel6dockerの構築は
@ucan-labさんの記事
【初心者向け】20分でLaravel開発環境を爆速構築するDockerハンズオン
を参考に作成しました。
変更点
version: "3.3" ←変更 services: app: build: ./infra/php volumes: - ./backend:/work web: image: nginx:1.18-alpine ports: - 10080:80 volumes: - ./backend:/work - ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf working_dir: /work
EC2インスタンス作成
画面右上のリージョンは東京に指定して下さい。
画面左上のサービスを開きEC2を選択。
探せない場合はすべてのサーピスから「EC2」と打ち込んで検索して下さい。
EC2をクリックしアクセス。1:Webサーバーの作成
インスタンスを起動をクリックし、選択画面が出たらそこもインスタンスの起動をクリック。
2:AMIを選択
AMIは「ubuntu 18.04」を選択。3:インスタンスタイプの選択
新規登録から1年間無料の利用枠「t2.micro」を選択。
6:タグの追加
タグを追加し値を任意の名前を付けます。
今回は「awstest」という名前を付けました。
1つ作ったら次へ。
7:セキュリティーグループ設定
任意のセキュリティーグループ名、説明を設定する。
今回は「test-docker」という名前を付けました。
ルールの追加を行い「HTTP」「HTTPS」「カスタム TCP ルール」を追加。
カスタムTCPのみ ポート範囲を指定。
今回は「10080」を設定します。
ソースには「カスタム」「0.0.0.0/0, ::/0」を設定。
全て設定し終わってら次へ。
キーペアの作成
インスタンスの「起動」ボタンをクリックすると、キーペアの作成画面が表示されます。
初めてEC2インスタンスを作成する方は
新しいキーペアの作成を選択し、任意の名前をキーペア名につけます。
キーペアのダウンロードを必ず行って下さい。
そしてインスタンス作成をクリック。作成したインスタンスの確認
EC2の画面に戻ってみると作成したインスタンスがある事が確認できます。
Nameのところにタグの項目で付けた名前があります。
「実行中」「2/2のチェックに合格しました」となったら完了です。
続き
続きはこちら
AWSにdockerを使用したlaravelをデプロイ②**間違い等ございましたらご指摘お願い致します**
- 投稿日:2020-10-11T11:04:43+09:00
今更Docker(-compose)の便利さを知る(使うにあたって参考にした情報リスト)
きっかけ
もともと仕事でdocker-composeを使っていたけど、誰かの作った設定を「こういうコマンドで使ってね」という感じだった。
ふと思い立ち、Wordpressを新たに作ろう/grafanaも立てたい/node-redとかも必要かもとなった。
初めはせっかくHyper-V使えるんだから、Hyper-V上の1イメージに作ればいいかとか思ったけど、ネットワーク的におかしい。
(githubのhttpsアクセスが拒否られる……)
もう解決策も分らんくなったのであきらめた。docker-composeは、使いたいアプリ/システムをダウンロードして使えるんやでってことはなんとなく知ってたので、「じゃぁdocker-composeでやってみるか」となった。
相変わらず深くまでちゃんと分かっているわけではないが、参考にした情報をメモしておく。
WindowsにDockerのインストール
- ググってDocker-for-Windowsにたどり着いてインストーラーでインストール
- 前はHyper-V上に構成してたので、Win10 ProとHomeではインストール手順が違っていたはずだが、今はWSLを使う(パフォーマンスもこっちの方が良いらしい)っぽいのでHomeでも同じかもしれない
- Hyper-V・・・もう要らんか・・・?
- WSLが入っていないとインストール後にDocker-Desktopの設定の時に「WSLをインストールするまで動かへんで」と言ってくるので、ダイアログに従ってWSLをインストールする
docker-compose.ymlを作成する
とりあえず、docker-compose.ymlを書けば、ダウンロードしてきてビルドされることは知っていたので書こうとする。
が、何を書いていいのかわからない。参考しにした情報
- docker-composeにWordpressを入れる書き方
- https://docs.docker.jp/compose/wordpress.html
- コピペで良い
- 設定の内容は読むとなんとなくわかる
docker起動
Power Shell を管理者権限で起動して
> docker-compose up -dこれは仕事で使っているので知っている。
docker落とす
Power Shell を管理者権限で起動して
> docker-compose downボリューム(設定とかが記憶されているところ。DBにボリュームの指定が無いと、dockerを落とすたびにデータが消される)ごと落とす場合は
> docker-compose down -vそして、Wordpressの言語設定が保存されないことに気づく。
volumesの設定について
先述のWordpressの指定は以下の通り。
docker-compose.ymlversion: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data:「あーdbのvolumesのdb_dataが、volumesのdb_dataに紐づいて保存されるんだな」と理解。
docker-compose.ymlversion: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: - wordpress_html:/var/www/html volumes: db_data: wordpress_html:上記の指定は、ボリュームのパスがwindowsのパスからは分かりづらい指定。
参考にしたサイトではwordpress: volumes: - ./wordpress/html:/var/www/htmlとだけ指定して、wordpressと同レベルのvolumesは使っていない。
これは、指定したパスにボリュームの共有ディレクトリを作るか、Dockerが自動的にどっかにボリュームを作ってくれるのを信用するか違いだと思い込んでる。
(上記をしていたら何回かやっているうちに、DBにアクセスできなくなったのでやめた。。多分ディレクトリ内のファイルが壊れたりなんかしたのだろう・・・)参考しにした情報
- wordpressのvolumesに設定するべきパス
- volumes指定に関する説明
- volumesに関するリファレンス
その後、grafanaやらを組み込んだ時に参考にしたもの
- DBを複数使う方法
- grafanaをdocker-composeに設定する方法
- https://qiita.com/__Rayleigh__/items/4da75f467cab385d1006
- GrafanaCloud以外のプラグインを使いたかったので、こっちはトップレベルのvolumesを使わない
所感
Hyper-VではWordpressの1環境作るのにhttpsが通らないと何日も詰まっていたのに、docker-composeでは4コンテナを2時間で作れた。
これはdocker-composeに惚れてまう。
- 投稿日:2020-10-11T09:13:33+09:00
docker くん
compose構成
https://note.com/koushikagawa/n/nc63a8ae2e810
https://qiita.com/nemui_/items/f911be7ffa4f29293fd5
https://carametal.hatenablog.com/entry/2020/01/15/225637version: '3' # docker-composeのバージョンを指定
services:
nginx: # サービス名
container_name: "nginx" # コンテナ名
image: nginx:1.14 # image名を指定。ここではDockerHub上のnginxイメージを指定している。
links: # ここで指定したサービス名とのリンクを作成する
- php # サービス名”php”と”nginx”を関連付ける
php:
container_name: "php"
image: php:7.2-apache
ports:
- '80:80'
volumes:
- ./html:/var/www/htmlhttps://techplay.jp/column/613
- 投稿日:2020-10-11T09:13:33+09:00
docker
compose構成
https://note.com/koushikagawa/n/nc63a8ae2e810
https://qiita.com/nemui_/items/f911be7ffa4f29293fd5
https://carametal.hatenablog.com/entry/2020/01/15/225637version: '3' # docker-composeのバージョンを指定
services:
nginx: # サービス名
container_name: "nginx" # コンテナ名
image: nginx:1.14 # image名を指定。ここではDockerHub上のnginxイメージを指定している。
links: # ここで指定したサービス名とのリンクを作成する
- php # サービス名”php”と”nginx”を関連付ける
php:
container_name: "php"
image: php:7.2-apache
ports:
- '80:80'
volumes:
- ./html:/var/www/htmlhttps://techplay.jp/column/613