ラベル docker-compose の投稿を表示しています。 すべての投稿を表示
ラベル docker-compose の投稿を表示しています。 すべての投稿を表示

2020年9月10日木曜日

Credentials store error: StoreError('Credentials store docker-credential-desktop exited with "error getting credentials (docker-compose by docker desktop)

 docker desktop上で、docker-composeコマンドを実行すると
以下のエラーが出るので、対処方法を記載する

1)以下のコマンドを実施する
security unlock-keychain

2)PCのセキュリティパスワードを入力する



2020年6月4日木曜日

docker-compose(wordpress編)

nginx x php-fpmベースのdocker-composeを作成してみた



公式:


1行目:version
対応したDocker Engineに沿って記載する
(2020/6月の時点で、バージョン2.x以上で良いと思う)

参照先:



2行目:service
各種ミドルウェア(今回の場合、dbとnginxとwordpressを指す)を記述する前に
宣言的に記載する。

3行目:db
dbのコンテナを示す。

4行目:image
docker imageを示す。
主にdocker hubのレジストリサービスに登録しているimageから取得している。

5行目 - 6行目:Volumes
マウントしたい、ディレクトリ を示す

7行目:restart
実行時に再起動するのか決める

8行目 - 12行目:environment
環境変数を示す。

13行目 -14行目:port
ポート番号を示す。


16行目:wordpress
ミドルウェアを指す

17行目:image
wordpressのimageを指定した。

18行目:restart
実行時に再起動するのか決める

19行目 - 21行目:environment
環境変数を示す。

22行目 - 24行目:Volumes
マウントしたい、ディレクトリ を示す

26行目:nginx
ミドルウェアを指す

27行目:image
nginxのimageを指定した。

28行目 - 29行目:ports
ポート番号を示す

30行目 -34行目:Volumes
マウントしたい、ディレクトリ を示す

35行目:restart
実行時に再起動するのか決める

36行目 - 37行目:environment
環境変数を示す。



■メモ

バージョン3からdepends_onは不要になったようだ>

参照先:
https://matsuand.github.io/docs.docker.jp.onthefly/compose/compose-file/




2020年6月1日月曜日

raspberry pi for k8s x docker-compose

以前にも記載したが、別の方法を記述してみる。

git clone https://github.com/docker/compose.git
cd compose
git checkout 1.25.3
./script/build/linux
cd dist
./docker-compose-Linux-armv7l version
sudo cp docker-compose-Linux-armv7l /usr/local/bin/docker-compose
cd /usr/local/bin
sudo chown root:root docker-compose
sudo chmod 755 docker-compose

2020年5月21日木曜日

Laravel for docker-compose

参照先:


アーキテクト:
lara-docker/
|----docker-compose.yml
|--- nginx/
|         |---- Dockerfile
|         |-----default.conf
|
|----- laravel/
|           |-----Dockerfile
|
|----.ebextensions(beanstalkの環境設定)
|-----Dockerrun.aws.json(beantalk用のデプロイファイル)


1)nginxの初期設定ファイルの記載を行う

①laravelのドキュメント先を指定する。
②PHP-fpm関連で、fastcgiの記述を行う。

vi lara-docker/nginx/default.conf
----------------------------------------------------------
server {
    listen       80;
    server_name  localhost;

    location / {
        # Laravelのドキュメントルート設定
        root   /var/www/laravel/public;

        fastcgi_split_path_info  ^(.+\.(?:php|phar))(/.*)$;   
        fastcgi_intercept_errors on;

        fastcgi_index  index.php;
        include        fastcgi_params;
        # FastCGIの向き先をLaravelコンテナに設定
        fastcgi_pass   laravel:9000;
   # FastCGI サーバに渡されるべきパラメータを設定(一般的な設定)
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
-----------------------------------------------------------------


2)nginxのDockerfileの作成を行う
①nginxとalfinelinuxを指定する
②上記で、作成したdefault.confを導入先のdockerにコピーを行う。

vi lara-docker/nginx/Dockerfile
-----------------------------------------------------------------
FROM nginx:1.17-alpine

# ローカルから設定ファイルをコピー
COPY  default.conf /etc/nginx/conf.d/default.conf
-----------------------------------------------------------------


3)Dockerfileを作成する。
Dockerfile(laravel)
①amazonlinuxを導入する
②php-pecl-zip:zipを使えるようにするファイル。
③php7.3をインストール
④php-dom:phpとMySQLを接続するプラグイン
⑤composerのインストール
⑥Laravelをインストールする。
⑦Laravelのプロジェクトの作成する。
⑧php-fpmのインストールを行う

vi lara-docker/laravel/Dockerfile
---------------------------------------------------------------------
FROM amazonlinux:2 as vender

# PHPインストール
RUN amazon-linux-extras install -y php7.3
RUN yum install -y php-pecl-zip php-mbstring php-dom

# Composerインストール
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { 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');"
RUN mv composer.phar /usr/local/bin/composer

# 環境変数設定
# root でのインストールを許可する設定
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME "/opt/composer"
ENV PATH "$PATH:/opt/composer/vendor/bin"

# AWS fargateではdepends_onやlinkでのコンテナ通信を行えないため、コンテナ名(php-fpm)では接続できない
# そのため127.0.0.1で通信を行う
ARG PHP_UPSTREAM_CONTAINER=127.0.0.1
ARG PHP_UPSTREAM_PORT=9000


# Laravelインストール
RUN composer global require "laravel/installer"

# Laravelプロジェクト作成
WORKDIR /var/www
RUN composer create-project laravel/laravel laravel

# php-fpmの導入する。
FROM php:7.3-fpm-alpine

# ビルド用コンテナから必要なコンテンツをコピー
COPY --from=vender --chown=www-data:www-data /var/www/ /var/www/
------------------------------------------------------------------------------------------

4)Nginxのコンテナのビルドを行う
docker build nginx/. -t nginx 

5)Laravelのコンテナのビルドを行う
docker build laravel/. -t laravel

6)docker-composeを起動する。
docker-compose up

7).ebextensionsの作成を行う
mkdir .ebextensions


8)00permission.configの作成
(Laravelのパブリックディスクの権限設定)

vi 00permission.config
--------------------------------------------------------------------------------------------
container_commands:
  01chmod_storage:
    command: "chmod -R 777 ./storage"
---------------------------------------------------------------------------------------------

9)composer.configの作成
(Laeravelのドキュメントルート用)

vi composer.config
----------------------------------------------------------------------------------------------
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
-----------------------------------------------------------------------------------------------


10)beanstalkのデプロイ用のファイルの作成を行う。





ECS

参照先:

keypaire:


①ecs-cli configure profile --profile-name hidenari_ecs --access-key [access keyの値] --secret-key [secret-keyの値]
②ecs-cli configure --cluster ecs-test --default-launch-type EC2 --region ap-northeast-1 --config-name ess-test-config
③ecs-cli up --keypair [keypair名] --capability-iam --size 2 --instance-type t2.micro --cluster-config ecs-test --ecs-profile ess-test-config


1)key-paireを割り当てる
aws ec2 describe-key-pairs --key-name [Key name名]

2)クラスタ作成を行う。
 ecs-cli up --keypair [keypair名] --capability-iam --size 2 --instance-type t2.micro --cluster-config ec2-tutorial --ecs-profile ec2-tutorial-profile --force

参照先:


ecs-cli configure --cluster tutorial --default-launch-type FARGATE --config-name tutorial --region ap-northeast-1
ecs-cli configure profile --access-key [access keyの値] --secret-key [secret keyの値] --profile-name tutorial-profile
ecs-cli up --cluster-config tutorial --ecs-profile tutorial-profile


aws ec2 describe-security-groups --filters Name=vpc-id,Values=vpc-xxxxxxxxxxx --region ap-northeast-1
aws ec2 authorize-security-group-ingress --group-id sg-xxxxxxxxxxxx --protocol tcp --port 80 --cidr 0.0.0.0/0 --region ap-northeast-1


3)docker-composeファイルの生成を行う。
 vi docker-compose.yml 

4)ECSの環境ファイルを生成する。
 vi ecs-params.yml


5)docker-composeファイルから実行を行う。
 ecs-cli compose --project-name tutorial service up --create-log-groups --cluster-config tutorial --ecs-profile tutorial-profile
 ecs-cli compose --project-name tutorial service ps --cluster-config tutorial --ecs-profile tutorial-profile


スケールアップ:
2台にスケーリングアップする。 
ecs-cli compose --project-name tutorial service scale 2 --cluster-config tutorial --ecs-profile tutorial-profile
ecs-cli compose --project-name tutorial service ps --cluster-config tutorial --ecs-profile tutorial-profile


削除:
ecs-cli compose --project-name tutorial service down --cluster-config tutorial --ecs-profile tutorial-profile
ecs-cli down --force --cluster-config tutorial --ecs-profile tutorial-profile






2020年5月19日火曜日

docker-composeファイルの記述方法について

Docker compose とは:
以下の様な、個別のコンテナを一括で作成管理をするツールになる。
(個別で、Dokcerfileの実行が不要なので楽)


簡単なイメージ:
project_folder
|-------docker-compose <-----ここにnginxとphpのコンテナ実行に関する記述を記載
|-------nginx
| |----Dockerfile
|-------php
|----Dockerfile


Docker composeの記述方法について:
[image]
イメージを取得
例:
image: ubuntu

[build]
Dockerfile のあるディレクトリのパスを指定する。
例:
build: /path/to/build/dir

[command]
コマンドを使用時に記載
例:
command: bundle exec thin -p 3000

[links]
①コンテナを他のサービスにリンクします。
サービス名とリンク・エイリアス(サービス:エイリアス)を指定できるだけでなく
又は、サービス名(エイリアスとしても使われます)でも指定できます。

例:
links:
- db
- db:database
- redis


②エイリアス名を記述すると、コンテナ内の/etc/hosts の中にサービス名が
追加されるようだ。
例:
172.17.2.186 db
172.17.2.186 database
172.17.2.187 redis


Dockerの環境変数について:
参照先:

①name_PORT
全ての URL です。
例:DB_PORT=tcp://172.17.0.5:5432

②name_PORT_num_protocol
全ての URL です。
例:DB_PORT_5432_TCP=tcp://172.17.0.5:5432

③name_PORT_num_protocol_ADDR
コンテナの IP アドレスです。
例:DB_PORT_5432_TCP_ADDR=172.17.0.5

④name_PORT_num_protocol_PORT
公開するポート番号です。
例:DB_PORT_5432_TCP_PORT=5432

⑤name_PORT_num_protocol_PROTO
プロトコルです(TCP か UDP)。
例:DB_PORT_5432_TCP_PROTO=tcp

⑥name_NAME
コンテナの完全修飾名です。
例:DB_1_NAME=/myapp_web_1/myapp_db_1

定義ファイル ->docker-copose変換

ECSの定義ファイルからdocker-composeのファイルに変更する便利な方法です。

参照先:


1)定義ファイルを作成する。
vi 12345.json

2)作成した定義ファイルをdocker-composeファイルに変換する。
ecs-cli local create --task-def-file 12345.json --output docker-compose.12345.yml

Lambda + SSM Run Commandで、数十台のEC2のuserdata結果を一括確認する

コードを1枚貼って、テストイベントを実行するだけで、 全台の確認結果が返ってくる手順です。 [ゴール] Nameタグが web-* / api-* / batch-* のEC2すべてに確認コマンドを流し、 NGの台だけ を結果に表示します。確認対象のuserdata(Ubu...