20210325のdockerに関する記事は7件です。

DockerでGitによるバージョン管理

DockerにはデフォルトでGitがインストールされているためPC自体にインストールする必要はありません。

1.PCにGitがインストールされていない場合

自作の"myapp"にてPCにGitがインストールされていない状態でgitコマンドを入力すると

myapp % git init
xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.

このようなエラーが表示されます。Gitがインストールされていないので当たり前です。
スクリーンショット 2021-03-25 21.38.26.png
ポップアップも表示されます。PCにインストールする必要はないのでキャンセル。

2.DockerでGitを使うには

アプリを起動

docker-compose up

Dockerで起動しているコンテナを確認(NAMEを確認)

docker ps

コンテナに移動

docker exec -i -t コンテナ名 bash

移動先ではGitコマンドが使えるようになっているはずです。
お疲れ様でした。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerでgemを追加しbundle installでエラーになる

エラーの状況

gemを追加後、反映させるため以下のコマンドを実行したがエラーになる

ターミナル
$ docker-compose exec web bundle install
ERROR: No container found for web_1

原因

前回の時はdocker-compose run webの使い方だったが、docker-compose execをあまりわからず使っていたのが原因

run:コンテナ起動してコマンド実行
exec:起動中のコンテナでコマンド実行 <= 重要!

なのでexecで実行する場合は予めdocker-compose upなりでコンテナ起動させてないと使えないとのこと

エラーは勉強になるな、解決しないと焦るけど笑
いうてまだまだ表面の理解だけなので手を動かして覚える

参考にさせていただいたURL

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【独学 / 開発実務未経験】アプリ共有サービス" Ability ”の開発記録(Laravel / Vue / AWS / Docker / CircleCI)

挨拶

はじめまして!kamajiと申します?
開発実務未経験者が、人気の高まっている技術を筆頭にWebサービスを開発いたしましたので
紹介させていただきます。

自己紹介

経歴:4年生大学卒業後、メーカ系Sierに所属しており現在3年目(上流工程担当)
年齢:25歳
趣味:最新のアプリを触るのが好きで最近のお気に入りはNotionです。

? 開発したサービスについて

タイトル名:Ability

URL:https://ability-applications.com/home (PC推奨)
Github:https://github.com/tomoya-kamaji/ability

サービス概要

アプリに特化した情報共有サービス。
個人間でアプリをレビュー、共有することで自分にあったアプリを見つけることができます。

なぜ作成したのか?

ユーザに多くのアプリを知ってもらって、生活、業務に取り込んでいただくきっかけを作りたいという想いから作成しました。

■私の原体験
新卒でSierに入社した当初は、自分の業務のやり方がアナログで非効率でした。
頼まれたことを紙のメモや付箋を使って管理しますが、すぐになくしてしまう、字が汚くて読めない。結局役に立たない。
そんなとき、職場の周りの方が様々なアプリを使用して業務の改善を図っていました。(TrelloやOneNote、VSCODEなど)
見たことのないツール、サービスを匠に使いこなされていて感動したことを覚えています。
それを見てすぐにインストールして自分の業務に取り込んでいき、少しずつ業務を改善していくことができました。
使っていて自分の能力が高まった感覚になり、それからは最新のツールやサービスを見るのが大好きになりました?
そのときにもっと早くそういったサービスを知るきっかけを作りたいという思いから、個人でカジュアルにアプリを共有できるサービスを作成しました。

画面イメージ

Home画面

image-20210325173550373.png

アプリ検索画面

image-20210325173618877.png

レビュー投稿画面

image-20210325173741544.png

アプリ詳細画面

image-20210325173920674.png

image-20210325173949310.png

マイページ

image-20210325173843937.png

開発期間,時間

期間:年末年始~3月末の3ヶ月弱
時間:概算ですが学習時間と合わせて約300時間ほど費やしたと思います。
平日2時間。休日7~10時間。

週:約25時間
月:約100時間
合計:約300時間

仕事をやりながらだったので、コントロール性が高い朝に活動してました。(5~6時起き。リモート勤務に感謝)

学習方法

基本は独学で、途中からMENTAというサービスでメンターを雇い進捗管理をしていただきました。

学習教材

Udemy / Techpit / 書籍をメインに学習を行いました。詳細は最後に記載いたします。

? 機能一覧

アプリ検索機能

  • iThunsAPIを用いた検索

アプリ関連

  • ブックマーク機能

レビュー機能

  • レビュー登録
  • レビュー編集
  • レビュー削除

アプリ詳細画面

  • レビュー一覧
    • フィルタリング
  • iThunsAPIの情報から下記の情報を
    • アプリ名
    • アプリの詳細情報
    • アプリの新着情報
    • アプリの起業情報
    • アプリのスクリーンショット

ユーザ関連

  • マイページ編集機能
  • フォロー、フォロワー機能
  • ブックマーク一覧閲覧

⏱️ 技術・環境

フロントエンド

  • HTML / CSS / Sass / Boostrap
  • JavaScript / Vue.js

バッグエンド

  • PHP
  • Laravel
  • PHPinit

データベース

  • MySQL

インフラ

  • AWS(VPC、EC2、RDS、ACM、EBS、S3)

その他ツール

  • VSCODE
  • Git / Github
  • Docker:開発環境のみ
  • CircleCi

インフラ構成図

Ability インフラ構成.png

開発環境、本番環境

開発環境にDocker / docker-composeを使用しており、以下の3つの用途のコンテナを使用しています。

  1. Webサーバーのコンテナ: Nginx
  2. アプリケーションのコンテナ: PHP / Laravel / Vue.js
  3. DBのコンテナ: MySQL

本番環境もECSを使ってコンテナ化したかったのですが、謎のエラーがでて断念しました。
EC2でのデプロイ経験にも慣れるため、今回はEC2上で環境構築していく形で進めていきました。

?️ 技術選定理由

技術を選定する上で、主に以下2点の観点を重視して選択しました。

  • 独学でも学びやすく実装できるまでたどり着けるか(途中で挫折しないか)
  • 現状、主流のWebアプリ開発で使用されているか

バックエンド:PHP/Laravel

役割:サーバサイドとしての機能。認証、クエリ発行など

採用理由

  • 初学者から学ぶ方が多いので、記事が多数
  • Rubyと迷ったが、関西での求人数が多いという理由からPHPを選択

フロントエンド:Vue.js

役割実際にブラウザで表示される部分、SPAで運用

採用理由

  • Vueテンプレートで簡潔に記述でき、生のJSにくらべて可読性高い
  • Reactと迷ったが、Vueよりも記述量が多く実装に時間がかかるという観点で不採用

CSSフレームワーク:Bootstrap

役割:UIを整える

採用理由

  • グリットシステム採用で直感的に画面の配置ができる。(よくある画面になりがちなので、配色を変更するなどして工夫しました。)

開発環境:Docker/Docker-compose

役割仮想開発環境の構築

採用理由

  • 1度Dockefileを記述してしまえば、環境構築が簡単
  • 短時間で行える・コンテナ型の為、軽量

インフラ:AWS

役割本番環境の運用

採用理由

  • クラウドサービスの中でシェア率No.1。記事が豊富
  • Herokuだと起動するまで遅く、GCPは初学者の実装例が少ない

CI/CDツール:CircleCI

役割自動でテスト・デプロイを行う

採用理由

  • オンプレのJenkinsと比べて設定が簡単
  • 手動でテスト・デプロイをする必要性が少なくなる
  • GitActionsとかなり迷いました

? 工夫した点

iThunsAPIの使用

レビュー投稿機能を作成するにあたって、下記2点が課題としてはありました。

  • レビュー時にユーザからアプリ名や画像を登録してもらうのが大変
  • マスターテーブルを作成するのは開発者の管理工数がかかってしまうこと

iThunsAPIを利用してレビュー投稿することでユーザの投稿へのハードル下げました。
iThunsAPI仕様

UI/UX

  • サイトのデザインに一貫性をもたせて、見やすく
  • 既存のWebアプリのデザインを参考に。(食べログなど)

環境・技術

  • チーム開発を意識して、Gitにpushする際は必ずプルリクを出してGithub上でマージするように心掛けました。

最後に

今回、人生で始めてオリジナルアプリを制作しました。
挫折せずに完成までこぎつけたのは以下2点の要因が大きいかと思います。

  1. やらなければいけない状況に自分をおいたこと

    3月迄にWebアプリを作成すると周りの友人などに宣言し、完成しなければいけない状況に追い込み自分を奮い立たせていました。
    また、メンターを雇い学習の進捗管理を行っていただいたのも効果的でした。(メンターの方ありがとうございました!)

  2. インプットはそこそこでアウトプットをメインに

    完全に理解するのはかなり時間がかかるので、そこそこのインプットで終わり、アウトプットメインで学習を行いました。
    PHPとLaravelの学習は合わせて3週間くらいで終わらせたと思います。

今後も上記2点のことを意識して学習を勧めて行きたいと思っております!
最後まで読んでいただきありがとうございました?

? 学習教材一覧

Udemy

PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門
PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】
Vue.js入門決定版!jQuery を使わない Web 開発 - 導入からアプリケーション開発まで体系的に動画で学ぶ
Vue.js + Firebaseで作るシングルページアプリケーション

Techpit

Vue.js/Vuexを使ってTrello風アプリを作成しよう!
Laravel(+Vue.js)でSNS風Webサービスを作ろう!
Laravel × CircleCI × AWSで学ぶCI/CD

書籍

たった1日で基本が身に付く! Docker/Kubernetes超入門
ゼロからわかるAmazon Web Services超入門 はじめてのクラウド (かんたんIT基礎講座)

参考リンク

絶対に失敗しないDockerでLaravel+Vueの実行環境(LEMP環境)を構築する方法〜前編〜
絶対に失敗しないDockerでLaravel6.8+Vueの実行環境(LEMP環境)を構築する方法〜後編〜

etx....

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【独学 / 開発実務未経験】アプリ共有サービス「Ability」の開発記録(Laravel / Vue / AWS / Docker / CircleCI)

挨拶

はじめまして!kamajiと申します?
開発実務未経験者が、人気の高まっている技術を筆頭にWebサービスを開発いたしましたので
紹介させていただきます。

自己紹介

経歴:4年生大学卒業後、メーカ系Sierに所属しており現在3年目(上流工程担当)
年齢:25歳
趣味:最新のアプリを触るのが好きで最近のお気に入りはNotionです。

? 開発したサービスについて

タイトル名:Ability

URL:https://ability-applications.com/home (PC推奨)
Github:https://github.com/tomoya-kamaji/ability

サービス概要

アプリに特化した情報共有サービス。
個人間でアプリをレビュー、共有することで自分にあったアプリを見つけることができます。

なぜ作成したのか?

ユーザに多くのアプリを知ってもらって、生活、業務に取り込んでいただくきっかけを作りたいという想いから作成しました。

■私の原体験
新卒でSierに入社した当初は、自分の業務のやり方がアナログで非効率でした。
頼まれたことを紙のメモや付箋を使って管理しますが、すぐになくしてしまう、字が汚くて読めない。結局役に立たない。
そんなとき、職場の周りの方が様々なアプリを使用して業務の改善を図っていました。(TrelloやOneNote、VSCODEなど)
見たことのないツール、サービスを匠に使いこなされていて感動したことを覚えています。
それを見てすぐにインストールして自分の業務に取り込んでいき、少しずつ業務を改善していくことができました。
使っていて自分の能力が高まった感覚になり、それからは最新のツールやサービスを見るのが大好きになりました?
そのときにもっと早くそういったサービスを知るきっかけを作りたいという思いから、個人でカジュアルにアプリを共有できるサービスを作成しました。

画面イメージ

Home画面

image-20210325173550373.png

アプリ検索画面

image-20210325173618877.png

レビュー投稿画面

image-20210325173741544.png

アプリ詳細画面

image-20210325173920674.png

image-20210325173949310.png

マイページ

image-20210325173843937.png

開発期間,時間

期間:年末年始~3月末の3ヶ月弱
時間:概算ですが学習時間と合わせて約300時間ほど費やしたと思います。
平日2時間。休日7~10時間。

週:約25時間
月:約100時間
合計:約300時間

仕事をやりながらだったので、コントロール性が高い朝に活動してました。(5~6時起き。リモート勤務に感謝)

学習方法

基本は独学で、途中からMENTAというサービスでメンターを雇い進捗管理をしていただきました。

学習教材

Udemy / Techpit / 書籍をメインに学習を行いました。詳細は最後に記載いたします。

? 機能一覧

アプリ検索機能

  • iThunsAPIを用いた検索

アプリ関連

  • ブックマーク機能

レビュー機能

  • レビュー登録
  • レビュー編集
  • レビュー削除

アプリ詳細画面

  • レビュー一覧
    • フィルタリング
  • iThunsAPIの情報から下記の情報を
    • アプリ名
    • アプリの詳細情報
    • アプリの新着情報
    • アプリの起業情報
    • アプリのスクリーンショット

ユーザ関連

  • マイページ編集機能
  • フォロー、フォロワー機能
  • ブックマーク一覧閲覧

⏱️ 技術・環境

フロントエンド

  • HTML / CSS / Sass / Boostrap
  • JavaScript / Vue.js

バッグエンド

  • PHP
  • Laravel
  • PHPinit

データベース

  • MySQL

インフラ

  • AWS(VPC、EC2、RDS、ACM、EBS、S3)

その他ツール

  • VSCODE
  • Git / Github
  • Docker:開発環境のみ
  • CircleCi

インフラ構成図

Ability インフラ構成.png

開発環境、本番環境

開発環境にDocker / docker-composeを使用しており、以下の3つの用途のコンテナを使用しています。

  1. Webサーバーのコンテナ: Nginx
  2. アプリケーションのコンテナ: PHP / Laravel / Vue.js
  3. DBのコンテナ: MySQL

本番環境もECSを使ってコンテナ化したかったのですが、謎のエラーがでて断念しました。
EC2でのデプロイ経験にも慣れるため、今回はEC2上で環境構築していく形で進めていきました。

?️ 技術選定理由

技術を選定する上で、主に以下2点の観点を重視して選択しました。

  • 独学でも学びやすく実装できるまでたどり着けるか(途中で挫折しないか)
  • 現状、主流のWebアプリ開発で使用されているか

バックエンド:PHP/Laravel

役割:サーバサイドとしての機能。認証、クエリ発行など

採用理由

  • 初学者から学ぶ方が多いので、記事が多数
  • Rubyと迷ったが、関西での求人数が多いという理由からPHPを選択

フロントエンド:Vue.js

役割実際にブラウザで表示される部分、SPAで運用

採用理由

  • Vueテンプレートで簡潔に記述でき、生のJSにくらべて可読性高い
  • Reactと迷ったが、Vueよりも記述量が多く実装に時間がかかるという観点で不採用

CSSフレームワーク:Bootstrap

役割:UIを整える

採用理由

  • グリットシステム採用で直感的に画面の配置ができる。(よくある画面になりがちなので、配色を変更するなどして工夫しました。)

開発環境:Docker/Docker-compose

役割仮想開発環境の構築

採用理由

  • 1度Dockefileを記述してしまえば、環境構築が簡単
  • 短時間で行える・コンテナ型の為、軽量

インフラ:AWS

役割本番環境の運用

採用理由

  • クラウドサービスの中でシェア率No.1。記事が豊富
  • Herokuだと起動するまで遅く、GCPは初学者の実装例が少ない

CI/CDツール:CircleCI

役割自動でテスト・デプロイを行う

採用理由

  • オンプレのJenkinsと比べて設定が簡単
  • 手動でテスト・デプロイをする必要性が少なくなる
  • GitActionsとかなり迷いました

? 工夫した点

iThunsAPIの使用

レビュー投稿機能を作成するにあたって、下記2点が課題としてはありました。

  • レビュー時にユーザからアプリ名や画像を登録してもらうのが大変
  • マスターテーブルを作成するのは開発者の管理工数がかかってしまうこと

iThunsAPIを利用してレビュー投稿することでユーザの投稿へのハードル下げました。
iThunsAPI仕様

UI/UX

  • サイトのデザインに一貫性をもたせて、見やすく
  • 既存のWebアプリのデザインを参考に。(食べログなど)

環境・技術

  • チーム開発を意識して、Gitにpushする際は必ずプルリクを出してGithub上でマージするように心掛けました。

最後に

今回、人生で始めてオリジナルアプリを制作しました。
挫折せずに完成までこぎつけたのは以下2点の要因が大きいかと思います。

  1. やらなければいけない状況に自分をおいたこと

    3月迄にWebアプリを作成すると周りの友人などに宣言し、完成しなければいけない状況に追い込み自分を奮い立たせていました。
    また、メンターを雇い学習の進捗管理を行っていただいたのも効果的でした。(メンターの方ありがとうございました!)

  2. インプットはそこそこでアウトプットをメインに

    完全に理解するのはかなり時間がかかるので、そこそこのインプットで終わり、アウトプットメインで学習を行いました。
    PHPとLaravelの学習は合わせて3週間くらいで終わらせたと思います。

今後も上記2点のことを意識して学習を勧めて行きたいと思っております!
最後まで読んでいただきありがとうございました?

? 学習教材一覧

Udemy

PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門
PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】
Vue.js入門決定版!jQuery を使わない Web 開発 - 導入からアプリケーション開発まで体系的に動画で学ぶ
Vue.js + Firebaseで作るシングルページアプリケーション

Techpit

Vue.js/Vuexを使ってTrello風アプリを作成しよう!
Laravel(+Vue.js)でSNS風Webサービスを作ろう!
Laravel × CircleCI × AWSで学ぶCI/CD

書籍

たった1日で基本が身に付く! Docker/Kubernetes超入門
ゼロからわかるAmazon Web Services超入門 はじめてのクラウド (かんたんIT基礎講座)

参考リンク

絶対に失敗しないDockerでLaravel+Vueの実行環境(LEMP環境)を構築する方法〜前編〜
絶対に失敗しないDockerでLaravel6.8+Vueの実行環境(LEMP環境)を構築する方法〜後編〜

etx....

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker/Kubernetes構成のためのPython開発プロジェクトの雛形

はじめに

PythonスクリプトをPipenv環境で開発し、実行するためのコンテナをEKS上で起動するというケースを想定しています。

次のソフトウェアを用います。

  • vim(ほかのエディタでも構いません)
  • venv
  • Pipenv
  • Python3.8
  • Docker
  • Amazon ECR
  • Amazon EKS

次の事項は扱いません。

  • 各構成要素のPros/Cons的な話
  • Amazon ECR/EKSのセットアップ(eksctlなどでクラスタを作れるようになっている必要があります)

構成ファイル

.
├── Pipenv(Pythonの環境管理)
├── Dockerfile(Pythonスクリプトを動作させるコンテナを定義)
├── deployment.yaml(Kubernetes上でコンテナを動作させるデプロイメント定義)
├── src
│   ├── main.py(開発対象のPythonスクリプト)

Python開発

サンプルスクリプト(./src/main.py)を作成して動作確認します。

サンプルスクリプト

今回は次のサンプルスクリプトを使用します。
仕様:1秒毎に標準出力に現在時刻を表示する。

./src/main.py
#
# 一秒毎に時刻を表示するプログラム
#

import time
import datetime

while 1 == 1:
    print("{}".format(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')))
    time.sleep(1)

今回は解説しませんが、Amazon Container Insightsを使うとKubernetesのPodのLogs(標準出力を含む)をCloud Watchで取得できるため、ローカル/Docker/Kubernetesのログ回りを単一のコードで実現できて便利です。サイドカー+Fluentなど専用のコードを入れる場合に比べ柔軟性は低いですが。

Pipenv環境を作る

次のPipfileを用意します。
dev-packagesの中身はvim環境のためのものなので、無くても実行できます。
(ご参考:『最低限の手間で、開発にも使えるVim環境を構築する。』

./Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[scripts]
dev = "python ./src/main.py"

[dev-packages]
flake8 = "*"
jedi = "*"
python-vim = "*"
pylint = "*"

[packages]

[requires]
python_version = "3.8"

Venv環境のセットアップ

# venv環境のセットアップ
# Python3が入っていない場合は事前に入れておいてください。
python3 -m venv .venv

Venv環境を有効にする

# b系シェルの場合
source .venv/bin/activate

# fishシェルの場合
source .venv/bin/activate.fish

Pipenv/必要パッケージをインストール

# Pipenvをインストール
pip install pipenv

# Pipfileを元に必要パッケージをインストール
pipenv install

Pythonスクリプトを実行する

venv環境を有効にした状態で、次のようにPipenvを用いてPythonスクリプトを実行します。
現在日時が一秒毎に表示されれば成功です。

pipenv run dev

> 2021/03/25 02:24:20
> 2021/03/25 02:24:21
> 2021/03/25 02:24:22
> 2021/03/25 02:24:23

コンテナの作成と実行

上記で作成したPythonプログラムを実行するコンテナを作成します
教科書通りのMulti-stage Build構成です。

./Dockerfile
#
# ビルダーコンテナ
#

FROM python:3.8-buster as builder

WORKDIR /app

COPY requirements.lock /app
RUN pip3 install -r requirements.lock

#
# メインコンテナ
#

FROM python:3.8-slim-buster as main
COPY --from=builder /usr/local/lib/python3.8/site-packages /usr/local/lib/python3.8/site-packages

COPY src /app

WORKDIR /app

ENTRYPOINT ["python", "/app/main.py"]

マルチステートビルドは本記事のスクリプト程度ではメリットを感じにくいですが、ミドルウェアを(特にコンパイルして)利用するプロジェクトなどでは実稼働コンテナに不要ファイルを生成する必要が無く有用です。

コンテナをビルド

# パッケージ情報を作成
# pipenvのパッケージ情報を出力します
pipenv lock -r > requirements.lock

# ビルドしてイメージを作成
# (一括してビルドする場合)
docker build -t <コンテナ名>:latest .

# 前段と後段を別々にビルドしたい場合は次の2つ
docker build --target builder -t <コンテナ名>:builder .
docker build --target main -t <コンテナ名>:latest .

コンテナを実行

docker run -it --rm <コンテナ名>:latest

> 2021/03/25 02:24:20
> 2021/03/25 02:24:21
> 2021/03/25 02:24:22
> 2021/03/25 02:24:23

Pipenvで実行した場合と同様、日時が1秒毎に表示されれば成功です。

Amazon EKSへデプロイする

次の事項はあらかじめ済ませておいてください。
・ECRのセットアップ
・ECRリポジトリの作成
・EKSのセットアップ
・eksctlのセットアップ(クラスタ作成で利用する場合)

ECRへコンテナイメージをプッシュする

ECRに作成したリポジトリにコンテナイメージをプッシュします。
リポジトリのURLは確認しておいてください。

手順は他のクラウドやDocker HUBと同様ですが、
ECRでは認証情報を引き込む必要があります。

# イメージプッシュ用のタグを作成
docker tag <コンテナ名>:latest <リポジトリURL>:latest

# ECRの認証情報をローカルに引き込む
aws ecr get-login-password --region <リージョン名:ap-northeast-1> | docker login --username AWS --password-stdin <リポジトリURLルート部分>

# プッシュを実行
docker push <リポジトリURL>:latest

EKSへデプロイ

本記事ではeksctlを用いてテスト用のクラスタを起動します。
EKSは更新が速いので、オプション構成は都度見直した方が良いかもしれません。
手元では起動に約20分かかります。

eksctl create cluster \
        --vpc-cidr 10.0.0.0/16 \
        --vpc-nat-mode HighlyAvailable \
        --name <クラスタ名> \
        --version 1.18 \
        --region <リージョン名:ap-northeast-1> \
        --nodegroup-name <ノードグループ名> \
        --node-type t3.large \
        --nodes 3 \
        --nodes-min 1 \
        --nodes-max 4

つぎの内容でデプロイメント用のyamlファイルを作成します
ネームスペースは別途作成しても良いですが、今回は同居させました。

deployment.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: <ネームスペース名>
  labels:
    name: <ネームスペース名>
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: <ワークロード名>
  namespace: <ネームスペース名>
  labels:
    app: <ワークロード名>
spec:
  replicas: 1
  progressDeadlineSeconds: 300
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: <ワークロード名>
  template:
    metadata:
      labels:
        app: <ワークロード名>
      namespace: <ネームスペース名>
    spec:
      containers:
      - name: <コンテナ名>
        image: <リポジトリURL>
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: "250m"
            memory: "256Mi"
          limits:
            cpu: "250m"
            memory: "256Mi"
      restartPolicy: Always
      securityContext: {}
      terminationGracePeriodSeconds: 30

次のコマンドでデプロイを実施します

kubectl apply -f deployment.yaml

デプロイ結果の確認

様々な方法があると思いますがシンプルにpod名を調べてlogsで確認してみます。
ワークロードの起動完了までに数分かかります。起動完了前でもkubectl logsコマンドを実行できますが何も取得できません。

# pod名を確認
# (本クラスタには記事のワークロードのみデプロイしていると想定しています)
kubectl get pods -n <ネームスペース名>

# podの出力を表示
# Pythonが一秒毎に表示している日付文字列が表示されれば成功です
kubectl logs <pod名> -n <ネームスペース名>
> 2021/03/25 02:24:20
> 2021/03/25 02:24:21
> 2021/03/25 02:24:22
> 2021/03/25 02:24:23
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

試しにcode-server使ってみた!

環境

  • EC2
  • Docker

初めに

Dockerのimageにcode-serverが出てきた!
試しに使ってみよう!
と思い構築を行い。記録用にここに記事として書いとこてな感じ
で作成しました。
EC2やセキュリティグループの設定、Dockerなどの知識はここでは省かせてもらいますので、公式ドキュメントで調べてみてください。

とりあえず構築

簡単に言うとDockerHubに上がっているイメージを使って構築

Dockerfile

FROM codercom/code-server

USER root

# パッケージの更新
RUN apt-get update -y

RUN apt-get install -y docker docker-compose

RUN apt-get clean

USER coder

RUN cat /etc/group | grep docker

docker-compose.yml

version: "3"
services:
  code:
    build: 
      context: .
      dockerfile: ./Dockerfile
    restart: unless-stopped
    command: code-server
    environment:
      PASSWORD: [任意のパスワード]
    ports:
      - 80:8080
    volumes:
      - ./projects:/home/coder/project
      - ./code-server:/home/coder/code-server
      - /var/run/docker.sock:/var/run/docker.sock

できたら実行!

  • コマンド
    • docker-compose up --build
  • 指定のブラウザでlocalhostにアクセス
  • ログイン画面が表示された

EC2にUPしてみる

  • sshでEC2に接続 ※pemファイルの権限は600に変更してあること前提
    • ssh -v -i [pemファイル] ec2-user@[Elastic IP]
  • gitを使ってリポジトリをClone
  • マウント先のフォルダに遷移
    • 例の場合:/var/www/code-server
  • Dockerのサービスを起動
    • service docker start
  • コンテナを起動
    • docker-compose up -d
  • Amazon Route 53はコスト面からやってないので、直接IPでHttp接続
    • http://[Elastic IP]
  • Local同様の画面が確認できた!

実際の画面

スクリーンショット 2021-03-25 10.03.07.png

今後

  • カラーやプラグインが設定できればより良いものになりそうなので、そこができるか調べ試そうと思う
  • 現状手動で起動しなければいけないので、自動で起動できるようにしたい!

リンク

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

rootless dockerの入力補完を有効にする

補完なしはちょっと辛くなってきたので調べました
軽く調べた感じだと公式ドキュメントに載ってないっぽい?(探せてないだけ?)

環境

  • Ubuntu 20.04
  • rootles docker

方法

とりあえずこれ/etc/bash_completion.d/の下に置いてあげればいい。
よくわからなければCompose用のコマンドを参考にしながらやれば大丈夫だと思います。

補足

おわりに

Ubuntuに普通のやつを入れてたらこのcompletionは一緒についてきてたんでしょうか?
知ってる人がいたら教えてください!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む