- 投稿日:2021-03-25T21:54:30+09:00
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がインストールされていないので当たり前です。
ポップアップも表示されます。PCにインストールする必要はないのでキャンセル。2.DockerでGitを使うには
アプリを起動
docker-compose upDockerで起動しているコンテナを確認(NAMEを確認)
docker psコンテナに移動
docker exec -i -t コンテナ名 bash移動先ではGitコマンドが使えるようになっているはずです。
お疲れ様でした。
- 投稿日:2021-03-25T15:47:06+09:00
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
- 投稿日:2021-03-25T14:06:31+09:00
【独学 / 開発実務未経験】アプリ共有サービス" 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画面
アプリ検索画面
レビュー投稿画面
アプリ詳細画面
マイページ
開発期間,時間
期間:年末年始~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
インフラ構成図
開発環境、本番環境
開発環境に
Docker / docker-compose
を使用しており、以下の3つの用途のコンテナを使用しています。
- Webサーバーのコンテナ: Nginx
- アプリケーションのコンテナ: PHP / Laravel / Vue.js
- 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点の要因が大きいかと思います。
やらなければいけない状況に自分をおいたこと
3月迄にWebアプリを作成すると周りの友人などに宣言し、完成しなければいけない状況に追い込み自分を奮い立たせていました。
また、メンターを雇い学習の進捗管理を行っていただいたのも効果的でした。(メンターの方ありがとうございました!)インプットはそこそこでアウトプットをメインに
完全に理解するのはかなり時間がかかるので、そこそこのインプットで終わり、アウトプットメインで学習を行いました。
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....
- 投稿日:2021-03-25T14:06:31+09:00
【独学 / 開発実務未経験】アプリ共有サービス「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画面
アプリ検索画面
レビュー投稿画面
アプリ詳細画面
マイページ
開発期間,時間
期間:年末年始~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
インフラ構成図
開発環境、本番環境
開発環境に
Docker / docker-compose
を使用しており、以下の3つの用途のコンテナを使用しています。
- Webサーバーのコンテナ: Nginx
- アプリケーションのコンテナ: PHP / Laravel / Vue.js
- 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点の要因が大きいかと思います。
やらなければいけない状況に自分をおいたこと
3月迄にWebアプリを作成すると周りの友人などに宣言し、完成しなければいけない状況に追い込み自分を奮い立たせていました。
また、メンターを雇い学習の進捗管理を行っていただいたのも効果的でした。(メンターの方ありがとうございました!)インプットはそこそこでアウトプットをメインに
完全に理解するのはかなり時間がかかるので、そこそこのインプットで終わり、アウトプットメインで学習を行いました。
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....
- 投稿日:2021-03-25T12:27:02+09:00
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 .venvVenv環境を有効にする
# b系シェルの場合 source .venv/bin/activate # fishシェルの場合 source .venv/bin/activate.fishPipenv/必要パッケージをインストール
# Pipenvをインストール pip install pipenv # Pipfileを元に必要パッケージをインストール pipenv installPythonスクリプトを実行する
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:23Pipenvで実行した場合と同様、日時が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>:latestEKSへデプロイ
本記事では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.yamlapiVersion: 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
- 投稿日:2021-03-25T10:17:56+09:00
試しに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 dockerdocker-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同様の画面が確認できた!
実際の画面
今後
- カラーやプラグインが設定できればより良いものになりそうなので、そこができるか調べ試そうと思う
- 現状手動で起動しなければいけないので、自動で起動できるようにしたい!
リンク
- 今回使用したImage
- 投稿日:2021-03-25T07:16:29+09:00
rootless dockerの入力補完を有効にする
補完なしはちょっと辛くなってきたので調べました
軽く調べた感じだと公式ドキュメントに載ってないっぽい?(探せてないだけ?)環境
- Ubuntu 20.04
- rootles docker
方法
とりあえずこれを
/etc/bash_completion.d/
の下に置いてあげればいい。
よくわからなければCompose用のコマンドを参考にしながらやれば大丈夫だと思います。補足
- Command-line completion
- これはCompose用のcompletion導入方法
- Command-line completion
- これはDocker Machine用のcompletion導入方法
おわりに
Ubuntuに普通のやつを入れてたらこのcompletionは一緒についてきてたんでしょうか?
知ってる人がいたら教えてください!