20210906のdockerに関する記事は11件です。

Windowsでnpm installしたいけど環境汚したくないからWSL2でDocker-composeを使う

概要 Docker初めて使います。 VSCodeのシンタックスハイライトを作るためにyeomanをインストールしたかったのですが、npmが必要とのことでした。 - 単純にWSL2でnpm installしても良かったのですが、WSL2の環境を汚したくないのでDockerのコンテナの中で作業したいと思いました。 事前準備 WSL2: Ubuntu-20.04 Docker : Docker version 20.10.8, build 3967b7d Docker-composeのための準備 WSL2の中に下記構成でファイルを作っておきます。 ~/node-docker$ tree -f . ├── ./docker-compose.yml └── ./node └── ./node/Dockerfile 次にdocker-compose.ymlとDockerfileを書いていきます。ベースとしているのは参考記事Docker-composeを使ってnode.jsの環境構築をしてみたのよ。中のコードです。npm installやimageの部分だけ変えています。 今回は./node/appを作業ディレクトリとしたいので、次のdocker-compose.ymlには次のように書いておきます。 docker-compose.yml version: '3' services: webserver: build: node image: node:latest #ここだけ変えました。 tty: true volumes: - ./node/app:/app ports: - "8080:3000" yoをインストールするため、Dockerfileは次のように書いておきます。 Dockerfile # ベースイメージを指定 FROM node # node.js の環境変数を定義する # 本番環境では production ENV NODE_ENV=development # 雛形を生成するのに必要なパッケージのインストール RUN npm install -g yo generator-code #ここだけ変えました。 # ディレクトリを移動する WORKDIR /app # ポート3000番を開放する EXPOSE 3000 コンテナに入るまで ここからは参考に記載したDocker-composeを使ってnode.jsの環境構築をしてみたのよ。と全く同じ手順で進みます。 最初にbuildします。初回は必要らしいです。 $ docker-compose build [+] Building 20.5s (3/6) => [internal] load build definition from Dockerfile => => transferring dockerfile: 390B 中略 => => naming to docker.io/library/node:latest Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them イメージが作成されているか確認します。 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE node latest 9687fd56f5e5 26 seconds ago 982MB コンテナを起動し、中に入ってみます。 $ docker-compose up -d [+] Running 2/2 ⠿ Network node-docker_default Created ⠿ Container node-docker_webserver_1 Started $ docker exec -it node-docker_webserver_1 /bin/sh # yoがインストールされているか確認してみます。 # yo --version 4.3.0 作業の終わりかた コンテナからexitで抜けます。 docker-compose stopでコンテナを停止します。 もう一度始めたいとき docker-compose restartでコンテナ起動します。 docker exec -it <コンテナ名> /bin/shでコンテナの中に入れます。 開発を終わるとき docker-compose downでコンテナが削除されます。 終わりに 書いてて思いましたが、WSL2を使ってるものの特徴的な部分はありませんね。強いて言うならWSL1→2の移行とDockerDesktopのインストールが手間取りましたが、他の方が散々やっているのでこの記事では書きません。 yoのインストールは他の参考記事を見てもnpmバージョンが原因なのかうまくインストールできなかったので、どのimageを使ったかのメモとして記事を残しておきたいと思います。 参考 Visual Studio CodeでCode Syntax Highlight Extentionを作る Docker-composeを使ってnode.jsの環境構築をしてみたのよ。 【Docker】docker-composeコマンド早見表 docker-compose up とか build とか start とかの違いを理解できていなかったのでまとめてみた
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

成人向け同人(R-18)のファイル管理方法を考える

何らかの事情でGitHub等のバージョン管理に触れたことのある方で、プライベートな同人活動でもそういったものを用いた開発を行いたいという方はいらっしゃると思います。 一般向けであれば普通にGitHub等のプライベートリポジトリを使えば良さそうですが、問題は一般向けでない方。 つまりR-18とか成人向けとか呼ばれるもので、どうすればこれらを管理していけるかについて考えていきたいと思います。 注意事項 筆者は今回の記事を作成する以前に色々と環境を操作したことがあるため、失念している作業があるかもしれません。 同様に処理したはずなのに異なる挙動が発生した場合は、そのメッセージ内容をGoogleで検索する等して対処してください。 今回の記事は結果としてDocker、docker-composeを使用してローカルに環境を構築するという形になりましたが、Androidエミュレータや仮想環境でHAXMを使用している場合、WindowsでのDockerに必要なWSLおよびHyper-Vと競合する場合があるので、代わりにVMwareやOracle VM VirtualBox等の仮想環境や実環境による構築を試みてください。 docker-composeとか余裕で理解していて完成したファイルのみ知りたい方は、ここに記載しているので読み飛ばしてください。 余裕で理解している人にサンプルが必要かと言われれば疑問が残りますが。 この記事で紹介しているDocker Desktopの法人利用に関して有料化が予定されています。 有料化対象となる従業員250人以上 or 年間売上1000万ドルを超えるところは早々ないとは思いますが、法人でこの記事を参考にしようと考えている方は回避策を考えておいてください。 GitHubみたいなものを利用出来たらいいなという記事ですが、GitリポジトリやDropboxによるバックアップが使えるだけで有用だとは思うので、全部が分からなくても部分的に活用してみても良いと思います。 対象者 プロジェクトを管理するソフトウェアまたはサービスが欲しい方 主な成果物がプログラムやスクリプトを用いたゲーム系で、特にR-15やR-18等の年齢制限がつく内容 Gitを使ったことがある、またはこの記事を読んだ上で別途勉強するつもりの方(Gitそのものの使い方についてはこの記事では書きません) Windows10を使用している方(をメインに話を進めます) 有名どころのGitサービス まずは、有名どころがR-18を許容しているかどうかの確認を行いましょう。 これで「あった!」となればそこで終了です。 GitHub https://github.com/ GitHub, Inc.によって運営されているGitHubは、GitHub 利用規定 - 2.コンテンツの制限に以下の記載があります。 性的・わいせつな内容を含むもの、 性的と書かれた時点で100%ダメですね。 GitLab(サービス) https://about.gitlab.com/ GitLab Inc.によって運営されているGitLabは、Termsの2. RESTRICTIONS AND RESPONSIBILITIESに以下の記載があります。 (1) is harmful, fraudulent, deceptive, threatening, abusive, harassing, tortious, defamatory, vulgar, obscene 翻訳すると (1)有害、詐欺的、欺瞞的、脅迫的、虐待的、嫌がらせ、不法、中傷的、下品、猥褻 下品や猥褻に恐らく引っ掛かりますね。 性的なコンテンツでなくても暴力的な方面のR-18もダメそうですね、これはGitHubもそうですが。 BitBucket https://bitbucket.org/ アトラシアンによって運営されているBitBucketは、Acceptable Use PolicyのInappropriate contentに以下の記載があります。 Is deceptive, fraudulent, illegal, obscene, defamatory, libelous, threatening, harmful to minors, pornographic (including child pornography, which we will remove and report to law enforcement, including the National Center for Missing and Exploited Children), indecent, harassing, hateful 翻訳すると 欺瞞的、詐欺的、違法、わいせつ、中傷的、軽蔑的、脅迫的、未成年者に有害、ポルノ(児童ポルノを含み、削除して、全米行方不明・搾取児童センターを含む法執行機関に報告します)、下品、嫌がらせ嫌い 検索してもなかなか出てこなくて、もしかして大丈夫なのか!?と思いましたが残念ながらアウトでした。 Backlog https://backlog.com/ja/ ヌーラボによって運営されているBacklogは、オプションでプロジェクト用のGitやSVNのリポジトリが作成できます。 Backlog単独での規約は見当たらず、ヌーラボ利用規約自体にはアプリケーションの種類に関する記述が見つかりませんでしたが、ヌーラボAPI利用規約 の第10条(禁止事項)に以下の記載があります。 (10)次のいずれかの内容を含むアプリケーションを制作すること ⑩青少年も含む不特定多数の利用者による閲覧に適さない内容 これが成人向けそのものをNGとしているか、それともAPIを使用してワークスペースそのものを成人向けサービスとして公開するものかは問い合わせないと分からないですが、こんな内容で問い合わせるのはちょっと…なのでやめておきます。 他のサービスについて私は知らないので、興味があったら調べてみてください。 自分で構築する 見つけられないなら、自分で構築するしかないですね。 とはいってもこの記事を検索で辿ってきた方の中には、環境構築の経験がない人もいらっしゃると思うので、出来るだけ簡単にできる方法を考えましょう。 ただし、冒頭にもあるようにローカルのみに保存するのではなく、外部にもデータ保存を行う方法で考えます。 何を使いたいか 有名どころの欄に書かれているサービスには、Gitリポジトリ管理の他に wiki機能 バグや新規機能の追加をTODOとして管理するIssues機能 等が付いていて、サービスをそのまま再現するものがあれば、基本的にはそれで済むと思います。 個人的には一定量以上のプログラムやスクリプトの構築と、プログラム以外に設定やシナリオが一定量以上あるものであれば、別物として設定wikiなんかも欲しいかなと思いますが、今回はとりあえずバージョン管理だけでも作れるようにしていきましょう。 用意するもの インストールの容易さでいけば、恐らくDockerで組んでいただいた方が楽だと思うので、その手順で進めます。 Dockerを使用しないまたは使用できない場合や、使いなれたLinux環境が物理または仮想で用意されている場合は、使おうとしているソフトウェアの名前だけメモって、各々のインストールガイドを検索すると良いです。 Windows Subsystem for Linux 2(WSL2) これから使用していこうとしているDockerをインストールするために、Windows Subsystem for Linux 2(WSL2)が必要になります。 Windows 10 用 Windows Subsystem for Linux のインストール ガイドを参考に、Windows Powershellを管理者として実行し、以下のコマンドを打ち込んでいきましょう。 管理者として実行は、Windows PowerShellのアイコンが見えた時点で右クリックしてメニューから選択する等して行います。 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 次に、x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージをインストールし、再びWindows PowerShellを管理者として実行し、以下のコマンドを打ち込みます。 wsl --set-default-version 2 Docker Desktop https://www.docker.com/ Qiitaによく来ている方はよく知っていると思いますが、簡単に言うと仮想化をもう少しコンパクトにしたものです。 成人向け同人と言えば一般的にはやはりWindowsだと思うので、最近Windows10 Homeでも使用可能になったDocker Desktopを使用しましょう。 Docker Desktopのインストール自体は難しくないと思うので、いい感じにインストールしてください。 Windows10なのにインストールできないという方は、更新プログラムの確認が必要です。 それ以前のOSの場合は…新しいOS買うか、Docker Toolbox等による構築を試みてください。 Git https://git-scm.com/ Gitで管理するという話で進めているので、Gitをインストールしてください。 ただし、今回はGitサーバを用意することを主軸とした話であり、Gitについて細かく説明は行いませんので、「Git 使い方」等で検索してください。 コマンドラインでも行えますが、TortoiseGitやVisual Studio Code等で表示した方が何をコミットやプッシュしていないかを見ることができますし、デフォルトでGitをサポートしている開発環境もあるので、そういった場合はそれを使用した方が良いです。 例えばVisual Studio Codeで表示した場合、変更したのにコミットしていないものはオレンジ色になります。 私はインストールしていませんが、TortoiseGitであればエクスプローラ上にステータスを表すアイコンが表示されるのと、フォルダやファイルを右クリックで何を行うか選択できるはずなのでやりやすくなるはずです。 構築 ここからが本番です。 Dockerは色々なソフトウェアを利用できますが、自分で構成を考えていかなくてはなりません。 Dockerのデータファイルを格納する起点のフォルダを決めておきましょう。 今回、私はDockerで使用するフォルダとしてC:\Dockerというフォルダを作成し、そこにDocker絡みのデータを格納することにしましたが、この辺は自由に決めてください。 記事で紹介する構成をまとめたGitHubリポジトリ https://github.com/full-deviation/docker-compose-example ファイルの配置や内容等について分からないことがあった時用に、実際に使用したファイルとそのフォルダ構成を格納したGitHubリポジトリを提示しておきます。 後で出てくるGit for Windowsのインストールが完了していれば、コマンドプロンプトで以下のコマンドを実行すれば内容は取得できるはずです。 git clone https://github.com/full-deviation/docker-compose-example.git Docker このリポジトリはPukiWikiのサンプルも別フォルダに用意してありますので、docker-composeの例として参考にしてみてください。 Gitサーバ Dockerでイメージが配布されているもので、私が把握しているのは以下のものです。 GitLab(ソフトウェア) GitBucket Gitea 私が組んだことがあるのはGitBucketなのでGitBucketを用いて解説を行っていきますが、GitLab(ソフトウェア)やGiteaで行いたいという場合は「使いたいソフト名 docker-compose」で検索するとヒットするはずなので、そちらを参考にしてみてください。 特にGitLabは有名なサービスとしても提供されているのもあって、恐らく安定度は高いと思われますが必要スペックが高いとも聞いているので動かす環境次第でしょうか。 GitBucketは単品で構成することが可能で、その場合はH2 Database Engineという軽量なデータベースを使用して起動しますが、いくつか調べて回ったところ組み合わせとして安全性が低く、他のRDBMSを連携した方が良いと公式発表があったそうなので、今回はGitBucket+PostgreSQLにします。 フォルダを決める 先ずはGitBucketの構成とデータを格納するフォルダを決めます。 今回、私はC:\Docker\gitbucketにしました。 wait-for-it.shをダウンロード https://github.com/vishnubob/wait-for-it GitBucketをPostgreSQLと組み合わせる場合、PostgreSQLが準備完了してからGitBucketを実行する必要があり、これを組み込まないと起動に失敗してしまいます。(H2の場合は問題なし) 先に必要なものを起動してから起動というやり方(depends_on)があるにはあるのですが、起動したからといって準備完了しているとは限らないため、これを待機するための機構が必要です。 そこで登場するのが、wait-for-it.shです。 まず、GitBucketのフォルダにdataというフォルダを作成します。(私の場合はC:\Docker\gitbucket\data) そして、ここを右クリックしてダウンロードしたものをdataフォルダに格納してください。 docker-compose.ymlを書く 次にGitBucketフォルダ内(C:\Docker\gitbucket)にdocker-compose.ymlを作成しテキストエディタで書きます。 文字コードはUTF-8(BOMなし)の改行コードはUnix系で使用するLFで行います。 docker-compose.yml version: "3.8" # docker-composeファイル形式v3.8 services: # サービスの一覧 # 【サービス名】gitbucket gitbucket: # 【イメージ】DockerHub上のリポジトリを指定 image: gitbucket/gitbucket:latest # gitbucketの最新版を使用 # 【ポート番号】(書式: - ホスト上のポート番号:Docker上のポート番号) ports: - 8080:8080 # HTTP - 29418:29418 # SSH # 【ボリューム】(書式: - ホスト上のパス:Docker上のパス) volumes: - ./data:/gitbucket # Docker上の"/gitbucket"を"./data"に保存する # 【再起動】 restart: unless-stopped # 手動で停止されない限りは自動起動 # 【依存先】(書式: - サービス名) depends_on: - db # サービス名"db"に依存する # 【環境変数】 environment: - GITBUCKET_DB_URL=jdbc:postgresql://db/gitbucket # DB接続先 - GITBUCKET_DB_USER=gitbucket # DBユーザ - GITBUCKET_DB_PASSWORD=gitbucket # DBパスワード # 【コマンド】wait-for-it.shでホスト名"db"のポート番号5432が接続可能になるのを待ち、成功したら"java -jar /opt/gitbucket.war"を実行 command: ["/gitbucket/wait-for-it.sh", "db:5432", "--", "java", "-jar", "/opt/gitbucket.war"] # 【サービス名】db db: # 【イメージ】 image: postgres:11-alpine # PostgreSQL11のApline Linux版を使用 # 【ボリューム】 volumes: - ./db:/var/lib/postgresql/data # Docker上の"/var/lib/postgresql/data"を"./db"に保存する # 【再起動】 restart: unless-stopped # 手動で停止されない限りは自動起動 # 【環境変数】 environment: - POSTGRES_DB=gitbucket # DB名 - POSTGRES_USER=gitbucket # DBユーザ - POSTGRES_PASSWORD=gitbucket # DBパスワード 一応コメントで大まかな説明が書かれていますが、ちょっと解説します。 ports # 【ポート番号】(書式: - ホスト上のポート番号:Docker上のポート番号) ports: - 8080:8080 # HTTP - 29418:29418 # SSH 8080:8080および29418:29418のコロンより左側の数字が、PCから作成されたコンテナにアクセスするためのポート番号になります。 8080:8080はWebブラウザで閲覧するためのHTTP用で、実際にブラウザで入力する際にはhttp://localhost:8080/と入力することになり、左側の数字を変更することでブラウザで入力時のポート番号が変更されます。 29418:29418の方はというとSSHと呼ばれるプロトコルで、GitではHTTPまたはSSHのどちらかを用いてバージョン管理が行えるので、そちらを使用する場合はこのポート番号を使用します。 volumes # 【ボリューム】(書式: - ホスト上のパス:Docker上のパス) volumes: - ./data:/gitbucket # Docker上の"/gitbucket"を"./data"に保存する (中略) # 【ボリューム】 volumes: - ./db:/var/lib/postgresql/data # Docker上の"/var/lib/postgresql/data"を"./db"に保存する ./data:/gitbucketのコロンより左側が実際にデータが保存される場所で、右側はコンテナ内のパスを表しています。 ./dataと書いた場合、./が現在のフォルダ(C:\Docker\gitbucket)から相対的という指定で、dataがその下のフォルダ名となるので、コンテナ上で/gitbucketというフォルダをC:\Docker\gitbucket\dataというフォルダに保存しますよという意味になります。 また、下の方にある- ./db:/var/lib/postgresql/dataはデータベースのデータ格納場所をC:\Docker\gitbucket\dbというフォルダに保存しますよという意味になります。 この辺に関しては他のdocker-composeでも同じようなものなので、追加で他にも使えそうなものがあれば使いたいという方は覚えておくと良いです。 docker-compose up -d docker-compose.ymlを置いたフォルダをエクスプローラで表示し、パス欄にcmdと入力しEnterキーを押すと、目的のフォルダでコマンドプロンプトを開くことができます。 または、コマンドプロンプト上でのフォルダ移動を理解している方は、コマンドプロンプトを起動してcdコマンドによりdocker-compose.ymlのあるフォルダに何とかたどり着いてください。 そしてコマンドです。 docker-compose up -d すると、以下のメッセージが表示されると思います。 Pulling gitbucket (gitbucket/gitbucket:latest)... (中略) Creating gitbucket_db_1 ... done Creating gitbucket_gitbucket_1 ... done 最後のdoneが成功した証です。 そして、タスクトレイにあるDockerのアイコンを右クリックしてDashboardを選択すると、以下のような表示になるはずです。 restart: unless-stopped設定で、■を押せば停止して▶を押すまでの間は再起動しても停止したままになりますので、アクセスできなくなった!という時にはチェックしてみてください。 ブラウザによるアクセス 管理者の設定 でアクセスすると初期画面が表示されます。 ここで右上にあるSign inを選択し、管理者ユーザーとして入ってみましょう。 IDおよびパスワードはrootです。 サインインに成功したら、まずはパスワードの変更を行います。 右上の[r]と表示されている場所をクリックしAccount Settingsを選択すると、Password (input to change password):という項目が見えるはずなので、万が一誰かにアクセスされた時でも大丈夫なように安全なパスワードを入力し、下にあるSaveをクリックします。※間違ってDelete accountを押さないように気を付けてください。** 画面上部に水色でAccount information has been updated.と表示されれば成功、失敗した場合は指摘された箇所を修正してください。 通常ユーザー設定 次に、先ほどAccount Settingsを設定したのと同じ右上からSystem Administrationを選択し、システム設定を開きます。 アカウントを追加する場合は、(初期表示にはなっていますが)左のUser managementを選択し右上のNew userを選択します。 例えば、こんな感じで書いて下部のCreate userを押します。 一般的には管理者と利用ユーザーは分けてやった方が良いですが、どうせ一人しかアクセスしないしという場合は分けなくても良いかもしれません。私は分けます。 外部からポートフォワードすることで複数利用者での活用も行えますが、この辺は多分ここで書かれているような内容を勉強している段階では危険だと思うので説明しません。 どうしてもという場合は「ポート開放」や「DDNS」というキーワードで検索してください。 ルーターのメーカーによって異なると思うので、メーカー名も検索条件に入れると良いでしょう。 内部側のポートは、ここに書かれている内容だとポート番号8080なので上手くつなげてください。 システム設定 ここから先は、人によって異なると思うので変更しそうな設定だけ。 設定を変更したら最後に画面下にあるApply Changesを押すのを忘れないように。 更新に成功すると上部にSystem settings has been updated.と表示されます。 Repository operation リポジトリを一般ユーザーが作ったり削除したりできるようにするか、管理者のみに制限するかを選択します。 信用できない利用者が発生しそうなサーバやリポジトリが想定される場合、適宜Admin Onlyに変更してください。 逆にAdmin Onlyに変更した操作は、その必要が発生する度に管理者が呼び出されることになるので、New userでAdministratorを設定したユーザーを増やして複数名体制にする等の措置も考える必要があります。 Anonymous access 匿名で閲覧できるようにするかを選択します。 何かの間違いで閲覧されてしまうことを防止するためにDenyとした方が良いですね。 File upload ファイルアップロードのサイズ等を規定します。 動画や音楽等のことを考えると結構大きな値が良さそうですが、とんでもないものをアップロードされる可能性も考慮して適宜変更してください。 リポジトリを作成 一般ユーザーを作った場合は作成した一般ユーザーでサインインし直し、管理者のみの場合はそのままで、とりあえず最初のリポジトリを作成します。 サインイン後の右上にある[+]からNew repositoryを選択しましょう。 Repository nameを記入して、下部のCreate repositoryを押せばリポジトリの作成は完了です。 最初のやり方については、リポジトリの作成後に表示されるページに書かれているように行えばpushできるはずです。 この辺はGitHubでも似たような文面が表示されるので、経験者なら見たことがあるはず? データのバックアップ PCの故障、火事、自然災害等、家にあるからといってデータが安全であることが保障されないので、データのバックアップをクラウド上に保存できたら良いですよね。 ということで調べてみましょう。 外部バックアップが必要ない方は読み飛ばしてください。 Dropbox https://www.dropbox.com/ Dropbox, Inc.が提供するクラウドストレージサービスです。 一応、規約を確認してみると利用規定に以下の記載があります。 違法なポルノや猥褻なコンテンツ、またはテロのプロパガンダを含む過度な暴力やテロ活動を公開、共有すること。 この違法なポルノとは児童ポルノ等の所持していると罪に問われるものや、同意を得ていない類のことで、性的な表現を含む活動をしている方々にも利用可能なように他サービスよりもポルノ関係には寛容だそうです。(今のところは) ということで登録を行います。 登録が終わるとDropbox デスクトップアプリのインストールを催促されるので、これを入れておきます。 この時に選択したフォルダが後の工程で使用されるので、場所はよく考えておいてください。 今回、私はDropboxのフォルダを E:\Shared\Dropbox という新規フォルダで確保したという仮定で話を進めます。 通知のカスタマイズ Dropbox デスクトップアプリの通知は、デフォルト状態だとファイルの追加や編集の度に出てくるので、今回のようにソフトウェアによってファイルがいくつも変更されるケースにおいては、そのあたりの通知を無効化しておいた方が無難です。 タスクトレイのDropboxを左クリックして出てくるウィンドウで、右上アイコンを左クリックすると出てくる基本設定の通知の項で、以下の項目からチェックを外しておくと良いでしょう。 新しいファイルが同期されたとき ファイルが編集されたとき バックアップスクリプトの作成 試しにmklinkによるシンボリックリンクのみでバックアップを実現できないか試してみましたが、どうやらDropbox でのシンボリック リンクに示されている通り、シンボリックリンクを張ってのバックアップはダメそう? という訳でバックアップスクリプトを作ります。 ZIPにまとめておけば復旧の時も楽かも? この動作のためだけに新しい追加ソフトウェアを整備したくないので、出来るだけデフォルトで入っているものを利用する ということで、PowerShellを使用したスクリプトを作りましょう。 場所はdocker-compose.ymlと同じGitBucketフォルダ内(今回の場合はC:\Docker\GitBucket)で、名前も分かりやすくbackup.ps1とします。 backup.ps1 ######################### # Backup to zip archive # ######################### $SrcPath = ".\*" $DstPath = "E:\Shared\Dropbox\Docker\gitbucket-backup.zip" Compress-Archive -Path $SrcPath -DestinationPath $DstPath -Force 説明ですが $DstPath = "E:\Shared\Dropbox\Docker\gitbucket-backup.zip" この $DstPath の右辺がDropbox保存先になります。 私の場合は、先ほど記載した E:\Shared\Dropbox フォルダ内にDocker関連ファイルを保存するためのDockerフォルダを作っていますが、この辺はインストール時のフォルダ設定とお好みで書き換えてください。 テスト実行 できたら実際に実行してみてzipが作成されることと、Dropboxに保管されていることを確認しましょう。 以下のようなエラーが表示される場合、PowerShellの実行ポリシーを設定する必要があります。 .\backup.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Docker\gitbucket\backup.ps1 を読み込 むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照 してください。 発生場所 行:1 文字:1 + .\backup.ps1 + ~~~~~~~~~~~~ + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess Windows Powershellを管理者として実行し、以下のコマンドを打ち込んでいきましょう。 Set-ExecutionPolicy RemoteSigned RemoteSignedは、外部から入手したスクリプトは署名付きであること、ローカルで生成したスクリプトは署名を必要としないという指定です。 セキュリティに厳密にとなるともう少し指定の仕方がありますが、今回の対象はあくまで個人製作と想定しているのでここでは詳しく説明しません。 自動バックアップの設定 バックアップ用のストレージを用意したものの実行を忘れていて、いざ必要になった時には欲しいデータが既に手遅れになっていたなんてことはありませんか?私はあります。 用意自体はしていても実行が手動だと人は忘れてしまうものなので、自動でバックアップを行うようにしておいた方が良いです。 という訳でバッチファイルを作ります。 ファイルはbackup.batとしてDockerフォルダ(今回の場合はC:\Docker)に置きました。 backup.bat cd %~dp0 cd gitbucket powershell -File backup.ps1 これも作成したら実行し、問題がなければタスク スケジューラに登録します。 スタートボタンを押下後、「task」と入力するとタスク スケジューラが出てくるので、これを選択します。 先ずは他社が作成した既存のタスクと混ざらないように、独自のフォルダを作成しておきましょう。 左側ツリービューに表示されているタスク スケジューラ ライブラリを右クリックし、新しいフォルダー(N)...を選択します。 私はSelfというフォルダーにしました。 次に中央上のリストビューにて右クリックし、新しいタスクの作成(C)...を選択します。 操作内容は、例えば私の環境であれば以下の通り。 「全般」タブ 名前 : Docker backup 「トリガー」タブで新規ボタンを押下 タスクの開始 : スケジュールに従う 設定 : 毎週 開始 : 2021/06/25 12:05:00 火曜日 「操作」タブで新規ボタンを押下 操作 : プログラムの開始 プログラム/スクリプト : C:\Docker\backup.bat 「全般」タブはよく分からないうちは名前と説明だけ変更する感じにしましょう。 ユーザーがログオンしているかどうかにかかわらず実行するを指定したいところだとは思いますが、これを指定した場合に特にデスクトップがあることを想定したアプリケーションの不具合等を説明するのが面倒なので、今回は指定しません。 「トリガー」で指定した開始の時刻部分は実行される時間になるので、確実にログインしている時間を指定します。 お好みで頻度を毎月や毎週の曜日を変更してみても良いですし、タスクの開始をスケジュールに従うから変更するのもありですが、あまり頻度が上がると負荷にも繋がるのでその辺は適宜調整してください。 「操作」のプログラム/スクリプトはbackup.batを配置した場所を指定してください。 OKを押して無事作成ができたのであれば、作成されたタスクを右クリックで実行する(R)を選択し、正しく実行されることを確認しましょう。 Google Driveは? https://www.google.co.jp/drive/apps.html 最初、使い慣れたGoogle Driveを使おうと考えていましたが、不正使用に関するプログラム ポリシーと違反措置に以下の記載があったので、残念ながらGoogle Driveは使えません。 露骨な性的表現 ヌード、性行為の描写、ポルノなどの露骨な性的表現を含むコンテンツは配信しないでください。これには、商業ポルノサイトにユーザーを誘導することも含まれます。教育、記録、科学、芸術を目的としたヌードは許可されます。 配信…共有しなければ大丈夫なのでしょうか? 大丈夫だと思う方はそちらで試してみても良いかもしれませんが、今回はできるだけセーフな手段での構築を目指すということで除外しておきます。 はじめよう 以上でサーバの準備は完了、後はGitを運用していきます。 GitBucketは元はGitHubクローンを目指していたそうなので、基本的にGitHubの機能を踏襲してあり、GitBucketで探したいものが見つからなかった場合は、代わりにGitHubで検索すると大体似たような項目があるはずです。 その他 Dockerホスティングサービス 今回、ローカルでDockerを動かす方法で解決を行いましたが、世の中にはDockerをホスティングするサービスがあったりします。 一番有名なのは、大企業でも使われているAmazon Elastic Beanstalkですが、これは大掛かりで同人ユースには厳しい。 さくらインターネットのDockerホスティングサービスArukasがサービス終了してしまったようです。 Arukasの代わりにさくらのクラウドにはデフォルトでDockerがインストールされているようなので、コマンドを調べて導入すればいけるかもしれません。 今回の記事の対象外なので規約の確認は行っていないため、サービスを利用する場合は規約を確認して下さい。 昔は二次元のR-18といえばさくらでOKだった記憶がありますが、今も利用可能かは知りません。 チーム開発 チームで開発し各々に更新を行わせるのであれば、セキュリティについて勉強した上で「ポート開放」や「DDNS」で検索したものを参考にしてみてください。 最近はルータの設定でVPNを使用したネットワークの構築も行えるそうなので、そちらの線でやってみるのもありなのかなと思います。 でなければ後はファイルを受け取って集中管理するしかないですね。 よほどの人数でなければそれでも十分ですし、管理手段があるとないとではかなり違ってくるので、使用者が1人に限定される状況でも導入はした方が良いかと思われます。 設定wiki 個人的にはゲームであれば設定wikiを別に建てておきたいところですが、どのソフトウェアを使用するかは人によると思いますし、これもまたサービスによって成人向けが可能か否か、非公開で使用出来るか等異なるため、利用規約と機能等をよく確認してください。 PukiWiki https://pukiwiki.osdn.jp/ PukiWikiはシンプルでデータベースも使わないので、Dockerに含める場合でもデータベースを共用することを考えなくても良いというのが良いですね。 歴史も長く色々なプラグインも開発されていたり文献も多かったりして、今でも現役で更新されています。 私個人としては、とりあえずPCを買ったらまずXAMPPとPukiWikiを導入する習慣があったほどで、過去に書いた設定を再利用する上ではこれでいいかなという気もしないでもないです。 GROWI https://growi.org/ja/ 最近流行りのMarkdownで書けるwikiとして出てきたCrowiのフォークとして生まれたGrowiは、なかなか強そうな感じ。 作られたのも最近だけあってモダンな見た目をしていますね。 データベースはMongoDBを使用していて、今回の記事で使用しているPostgreSQLとは別にデータベースを建てることになりますが、docker-compose上でPostgreSQLに複数のデータベースを持たせるのは初心者には厳しいような気もするので被ってない方が気楽かもしれませんね。 GROWIは公式がdocker-composeのリポジトリを用意していますので、そちらを参考にしてみてください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

転職活動管理アプリを作ろう②(開発環境構築~ログイン画面)

前回は コチラ ツール OS Windows 10 IDE eclipse (Version: 2020-12 (4.18.0)) [新規] > [Spring スターター・プロジェクト] より新規プロジェクトを作成 [ウィンドウ] > [ビューの表示] より「Bootダッシュボード」を開いておく DB MySQL (docker) ココ に docker-compose を置きました localhost:3306 で接続可能 http://localhost:8081/ で phpMyAdmin へ接続 プロジェクト設定 Spring Boot 必要なモジュールは以下の通り spring-boot-starter-data-jpa spring-boot-starter-security spring-boot-starter-thymeleaf spring-boot-starter-web spring-boot-starter-web-services spring-session-core thymeleaf-extras-springsecurity5 spring-boot-devtools mysql-connector-java spring-boot-starter-test spring-security-test spring-boot-starter-data-jdbc spring-boot-starter-jdbc application.properties DB 接続に必要な設定は以下の通り spring.datasource.url=jdbc:mysql://localhost:3306/sample spring.datasource.username=test spring.datasource.password=tset spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # spring.sql.init.mode=always # spring.sql.init.schema-locations=classpath:database/schema.sql # spring.sql.init.data-locations=classpath:database/data.sql spring.sql.init.encoding=utf-8 ログイン画面表示 $ docker-compose up -d で MySQL コンテナ(および phpMyAdmin コンテナ)を起動する 「Bootダッシュボード」より対象のプロジェクトを右クリック > [(再)起動] を選択 http://localhost:8080/ にアクセスするとログイン画面が表示される 次回に向けて docker(≒ dockerhub)を使うことで MySQL 環境構築がすぐ出来た Spring Boot が Tomcat を内包してくれているので、eclipse にプラグインを入れずともサーバー起動可能なことに感動した Linux 環境へのデプロイ方法や環境構築については後々調査する spring-boot-starter-security モジュールを入れることでログイン画面が即表示できた DB のスキーマ定義、実際のログイン処理については後々調査する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

転職活動管理アプリを作ろう①(導入)

目的  転職活動のステータス管理を Excel でやっているのですが、Mac と Windows それぞれでファイルを持ってしまっているため管理が煩雑になりました。  マルチデバイスで管理し、かつ個人情報を自分がセキュリティレベルをコントロールできるところに配置したいと思い立ち、新規に(簡単に)作成することにしました。 (「Notion とか使えば?」という声は聞こえません) 欲しい機能 ログイン 企業の応募ステータス管理 Markdown によるメモ機能 ノウハウを貯めておく Wiki (できれば)CSV 出力 (できれば)CSV 取込 サイト要件 動作環境 Linux Amazon Linux か Heroku か別のホスティングかは未定 Chrome 最新版 その他のブラウザは知らない 技術要件 言語 / フレームワーク Java 11 Spring Boot 2.4 DB MySQL サーバ Tomcat、Apache バージョン管理 Git コンテナ docker k8s は要検討 上記内容で進めていこうと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacのDocker Desktopを利用せずにLaravel 8.xのsailコマンドを実行できるようにする

Docker Desktopが有料化されることでDocker Desktopを利用しない選択肢を迫られるケースが出てくると思います。 Docker Desktopが有料化へ 従業員数250人以下・年間売り上げ1000万ドル以下の組織などは引き続き無料 - ITmedia NEWS https://www.itmedia.co.jp/news/articles/2109/02/news112.html Docker is Updating and Extending Our Product Subscriptions - Docker Blog https://www.docker.com/blog/updating-product-subscriptions/ Docker Desktopを利用しない方法にはいくつか選択肢がありますがLaravel 8.xのsailコマンドを利用する場合、選択肢が狭まってしまうのがわかったのでメモ。 結論 sailコマンドはDockerデーモンの起動確認をしてて、Lima + nerdctlはだめだったので、docker + docker-machine + docker-composeで!(2021/09/06時点) インストール手順 # Docker Desktopのアンインストール # GUIからアンインストールする # ※brew caskでインストールしているなら # brew uninsutall docker # brewでvirtualbox、docker cli、docker-machine、docker-composeのインストール $ brew install virtualbox docker docker-machine docker-compose # インストール確認 # アプリが立ち上がったらOK $ virtualbox $ docker -v $ docker-machine -v $ docker-compose -v インストールできたらVirtualBoxでVMインスタンス作成します。 # VirtualBoxでVMインスタンス作成 $ docker-machine create --driver virtualbox default # 環境変数を.bash_profileに設定 # zsh、fishの場合は任意のファイルに $ echo "$(docker-machine env default)" >> .bash_profile . .bash_profile 'docker.credentials.errors.InitializationError: docker-credential-desktop not installed or not available in PATH' エラーが出る場合以下のコマンドで設定ファイルを削除します。 $ rm ~/.docker/config.json 動作確認 Laravelのプロジェクトを新規作成してSailコマンドが実行できるか確認します。 $ cd 任意のディレクトリ # hogeは任意のプロジェクト名 $ curl -s https://laravel.build/hoge | bash $ cd hoge && ./vendor/bin/sail up プロジェクト作成できたらdocker-compose.ymlを編集してextra_hosts: 定義を無効化します。 これはERROR: for hoge_laravel.test_1 Cannot create container for service laravel.test: invalid IP address in add-host: "host-gateway" を回避するためです。 yaml services: laravel.test: build: context: ./vendor/laravel/sail/runtimes/8.0 dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP}' image: sail-8.0/app # extra_hosts: # - 'host.docker.internal:host-gateway' ports: - '${APP_PORT:-80}:80' $ cd hoge $ ./vendor/bin/sail up -d Creating network "hoge_sail" with driver "bridge" Creating hoge_selenium_1 ... done Creating hoge_mailhog_1 ... done Creating hoge_meilisearch_1 ... done Creating hoge_redis_1 ... done Creating hoge_mysql_1 ... done Creating hoge_laravel.test_1 ... done いえぃ! 、、、かと思いきやこのままホストからhttp://localhost/ にアクセスできません。Docker Machineを利用しているのでVMのIPアドレスをdocker-machine ip で取得する必要があります。 $ docker-machine ip <取得できたIPアドレス> で、http://<取得できたIPアドレス> にブラウザでアクセスします。 oh... 権限エラー 必要な権限を付与します。 $ ./vendor/bin/sail exec laravel.test bash # chmod -R guo+w storage で、http://<取得できたIPアドレス> にブラウザでアクセスします。 やってやったぜー ただ、動作確認は不十分なので、このあといろいろと不具合は出てくると思います。。。辛い あとがき Docker Desktopを利用しなくても起動できるにはできますが、いろいろと、とてもとても、、、とても手間がかかってしまうので、素直に所属する企業に状況を説明してお金を払ってもらうようにお願いするのが一番ストレスがないなぁって思いましたマル 参考 containerd & Lima: Open source alternative to Docker for Mac | by Akihiro Suda | nttlabs | Sep, 2021 | Medium https://medium.com/nttlabs/containerd-and-lima-39e0b64d2a59 lima-vm/lima: Linux virtual machines, on macOS (aka "Linux-on-Mac", "macOS subsystem for Linux", "containerd for Mac", unofficially) https://github.com/lima-vm/lima Docker Desktopの代替方法 - Windows and Mac編 https://zenn.dev/koduki/articles/ba54daaba28f93 macOSでDocker Desktopをアンインストールしてdocker-cli + docker-machineで動かすようにする - その手の平は尻もつかめるさ https://moznion.hatenadiary.com/entry/2021/09/01/112601 Get started with Docker Machine and a local VM | Docker Documentation https://docs.docker.com/machine/get-started/#run-containers-and-experiment-with-machine-commands docker-machine env | Docker ドキュメント https://matsuand.github.io/docs.docker.jp.onthefly/machine/reference/env/ Error with docker-compose: docker-credential-desktop not installed or not available in PATH · Issue #3785 · docker/for-mac https://github.com/docker/for-mac/issues/3785 docker-credential-desktop.exe not installed or not available in PATH https://sunday-morning.app/posts/2020-07-28-docker-credential-desktop-exe-not-installed-or-not-available-in-path What is linux equivalent of "host.docker.internal" - Stack Overflow https://stackoverflow.com/questions/48546124/what-is-linux-equivalent-of-host-docker-internal/61001152 DockerでLaravel+Apache+MySQLの開発環境を構築する - Qiita https://qiita.com/neneta0921/items/22f9864b6f6ff6d36004 Docker Machine をローカル VM で始めるには — Docker-docs-ja 1.11.0 ドキュメント http://docs.docker.jp/v1.11/machine/get-started.html docker-machine で localhost でポートを公開する - Qiita https://qiita.com/superbrothers/items/9505d6ebab6b10a585dd
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker on debian on VirtualBox

はじめに Docker Desktopが有料化されるということを受けて、今般、改めてVirtualBoxにて環境を作ることにした。 したらば「Linuxにdocker入れました〜」って情報はたくさん出てくるんだけど、その前のOSを準備するところからの流れはなかなか見当たらなかったので、とりあえずメモに残すことにしてみた。 なお、本件に登場するソフトウェアなどのバージョンは以下の通り(2021/09/06時点)。 macOS BigSur(11.5.2) VirtualBox:6.1.26 debian 11.0.0 docker 20.10.8 docker-compose 1.29.2 debian on VirtualBox LinuxのディストリビューションというとUbuntuが人気だけど、より安定性を重視しているということでdebianを選んでみた。今回、GUIを使うつもりはないので、ネットワークインストール版のISOを入手し、dockerを動かすのに必要最低限のもののみ導入する。 VirtualBoxで立てるVMにはNICを2つ(NATとホストオンリーアダプタ)を実装するのが良いらしいので、それに従うことにする。NATはゲスト→インターネット、ホストオンリーアダプタはホスト~ゲスト間の接続を担う一方、インターネットからゲストへのアクセスはできなくなるので、セキュリティ上良いということらしい(これはdebianに限った話ではない)。 (1) netinstバージョンのisoをダウンロードする(300MBぐらいだった) (2) VirtualBoxの仮想OSをセットアップする。仮想OSにはネットワークはデフォルトのNATと、もう1つホストオンリーアダプターを追加する。ホストオンリーアダプタのDHCPは無効にする。 (3) ダウンロードしたISOをセットしてVMを起動 (4) インストーラが立ち上がったら、install(上から2番目)を選択 (5) ネットワークのところでは2つのNICが表示される(enp0s3とenp0s8、前者がNAT、後者がホストオンリーアダプタ)。プライマリネットワークはenp0s3を選ぶ。 (6) 導入するパッケージでは、デスクトップ環境を外して、sshサーバと標準システムツールにチェックを入れる debianの準備 dockerを導入する前に、ちょこっとだけ準備が必要。 文字化け対応 日本語でインストールをすると、CUIは文字化けする場合があるようなので(実際文字化けした)、以下の対応をした。 (1) rootでログイン (2) vi /etc/bash.bashrcし、以下の行を最後に追加する /etc/bash.bashrc : case $TERM in linux) LANG=C ;; *) LANG=ja_JP.UTF-8 ;; esac ホストオンリーアダプタ側のインターフェースを有効にする enp0s3はアクティブだが、もう1つのenp0s8がDOWNしている上にIPアドレスの設定をしていないので、以下の設定ファイルを編集して反映する (1) /etc/network/interfaceに以下を追記する : (固定IPを設定) auto ip iface enp0s8 inet static address 192.168.56.11 <--- ホストオンリーアダプタのIP帯域(192.168.56.xxx)に合わせる netmask 255.255.255.0 # gateway 192.168.56.1 <--- GWはenp0s3側になるので、こちらには設定しない (参考:DHCPの場合はこうなる) allow-hotplug enp0s8 iface enp0s8 inet dhcp (2) OSリブート か systemctlでrestartをする (3) リブート後、ip addrでenp0s8にIPが振られていることを確認 (4) ターミナルでゲストOSからインターネットへ、及びホストOSに対しpingを打ち、どちらも応答が帰ってくることを確認する (5) ホストOSからゲストOSにsshでログインできることも確認する root@debian-vm:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:73:74:12 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3 valid_lft 84786sec preferred_lft 84786sec inet6 fe80::a00:27ff:fe73:7412/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:29:0f:1a brd ff:ff:ff:ff:ff:ff inet 192.168.56.11/24 brd 192.168.56.255 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe29:f1a/64 scope link valid_lft forever preferred_lft forever root@debian-vm:~# sudo (1) rootでログイン (2) apt-get install sudo (3) visudo を実行するとエディタが開く (4) 最終行にsudoを許容するユーザ(hogehoge)の情報を追加して、C-xで保存する。本当なら実行を許容するコマンドを絞り込んだりするのだろうが、ひとまずオールOKで進める。 hogehoge ALL=(ALL:ALL) ALL #全コマンドを許容する場合 (5) rootはログオフし、sudoを許容設定したユーザでログインする (6) sudo xxxを実行してエラーにならなければOK docker導入前のリソース使用量 ここまでの作業でHDD、メモリの使用量を見たらこんなだった。dockerを動かしたら、どのくらい消費するのだろうか? root@debian-vm:~# df -k ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 udev 1513560 0 1513560 0% /dev tmpfs 305968 524 305444 1% /run /dev/sda1 50303512 1175092 46540672 3% / tmpfs 1529840 0 1529840 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 305968 0 305968 0% /run/user/1000 root@debian-vm:~# free -m total used free shared buff/cache available Mem: 2987 75 2674 0 237 2771 Swap: 974 0 974 root@debian-vm:~# docker導入 debianにdockerを導入する。 dockerをインストールする 公式の手順に沿って進めればいいので、難しいことはない。 (1) dockerに必要なアプリ、ライブラリを導入 $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release (2) GPGキーを作成 $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg (3) aptのリストにdockerを追加 $ echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null (4) aptでdockerをインストール・確認 $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io : : $ docker --version Docker version 20.10.8, build 3967b7d $ (5) OSリブート後にdockerが起動していなかったら、以下のコマンドを実行する $ sudo systemctl enabled docker $ sudo systemctl restart docker docker-composeをインストールする こちらも公式の手順に沿って進めればよいので、難しくない $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $ which docker-compose /usr/local/bin/docker-compose $ docker-compose --version docker-compose version 1.29.2, build 5becea4c $ docker導入後のリソース使用量 docker、docker-composeをインストールし、dockerが起動している状態でのリソース使用量はこんな感じ。環境によって色々だと思うので参考まで。 root@debian-vm:~# df -k ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 udev 1513560 0 1513560 0% /dev tmpfs 305968 540 305428 1% /run /dev/sda1 50303512 1755992 45959772 4% / tmpfs 1529840 0 1529840 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 305968 0 305968 0% /run/user/1000 root@debian-vm:~# free -m total used free shared buff/cache available Mem: 2987 144 2586 0 257 2705 Swap: 974 0 974 root@debian-vm:~# 終わりに rootlessとかまだやるべきことはありそうだが、実験用だし、ひとまずpullしてrunできるようになったのでここでひと区切り。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac】Docker+rails6+postgreSQLでの環境構築完全版

環境 MacOS Big Sur 11.5.2 ruby 3.0.2 rails 6.1.4 Docker 20.10.8 postgreSQL 13.4 ディレクトリ myapp 全て現時点(2021/09/06)での最新バージョンです。 1.用意するファイル ・Dockerfile ・Gemfile ・Gemfile.lock ・entrypoint.sh ・docker-compose.yml Dockerfile FROM ruby:3.0.2 # yarnパッケージ管理ツールをインストール RUN apt-get update && apt-get install -y curl apt-transport-https wget && \ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update && apt-get install -y yarn RUN apt-get update -qq && apt-get install -y nodejs postgresql-client RUN mkdir /myapp WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install COPY . /myapp # Add a script to be executed every time the container starts. COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"] ここでyarnをインストールしておくのがポイントです。しないと後でwebpackerがインストールできずエラーになります。 Gemfile source 'https://rubygems.org' gem 'rails', '~>6' Gemfile.lockは空のままで大丈夫です entrypoint.sh #!/bin/bash set -e # Remove a potentially pre-existing server.pid for Rails. rm -f /myapp/tmp/pids/server.pid # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@" docker-compose.yml version: '3' services: db: image: postgres volumes: - ./tmp/db:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=password web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/myapp ports: - "3000:3000" depends_on: - db 2.実行 $ docker-compose run web rails new . --force --no-deps --database=postgresql ↓ $ docker-compose build ここでdatabase.ymlを編集します config/database.yml default: &default adapter: postgresql encoding: unicode host: db username: postgres password: password pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default database: app_development test: <<: *default database: app_test production: <<: *default database: app_production username: app password: <%= ENV['APP_DATABASE_PASSWORD'] %> パスワードなど設定した後データベースと接続します。 $ docker-compose run web rake db:create ↓ $ docker-compose up 終わったらlocalhost:3000とネットで検索すればこの画面が出てきます。 そしたら環境構築成功です! おわりに 【Mac】Docker+rails6+MySQLでの環境構築完全版 MySQLバージョンも作ったのでぜひ参考にしてください!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ns-3.34 をwindows上にてDocker+WSL2経由で動かす

はじめに ns-3 はネットワークシミュレータであり,研究などでよく用いられます. 環境構築が少し面倒ということもあり,下記の記事のようにDockerでの環境構築が紹介されています. ns-3.30用にDockerコンテナを立てた話 しかし,Windows用いた環境構築方法の記事は少なく,せっかくDockerで利用できるようにしている方がいるならWindows上で利用したいものです. 今回はこのようにWindows上でVisualizerによる表示ができるようにするところまでをご紹介します. なお,この記事によって起きた損害等の責任は一切負いませんので,自己判断にて参考にしてください. 前提条件 以下のものをインストール・セットアップしている必要があります. 1. Docker Desktop 2. WSL2上で動作するUbuntu (つまり,WSL2上でdockerコマンドが使えるようになっている必要があります.) インストール手順 今回利用するDockerFile等のソースコードは以下の記事にて紹介されているレポジトリをフォークし,記事作成時の最新バージョン(ns-3.34)用に書き換えたものになっています.そのため,DockerFile等の詳細については以下の記事を参照いただき,自己責任にてご利用ください. なお,ns-3.30でよい方は下の記事の手順でDocker イメージを作成する手順まで行い,当記事の「WindowsにVcXsrvをインストール」の部分から作業してください. ns-3.30用にDockerコンテナを立てた話 以下ns3.34を利用する方向けです. ns-3.34のDocker イメージの作成 WSL2上のUbuntuの任意のディレクトリにて,以下を実行してレポジトリをクローンします.その後,v3.34ブランチを利用します. $ git clone https://github.com/takonasu/ns3-docker.git $ cd ns3-docker $ git checkout v3.34 その後,Docker イメージをビルドをするため, makeコマンドを利用します. PCのスペックによりますが,30-60分程度かかります. $ cd ns3-docker-34 $ make WindowsにVcXsrvをインストール sourceforge.net より,VcXsrvをインストールします. インストールの詳細は以下の記事が参考になります.この記事を参考にWindowsにVcXsrvをインストールしてください. Windows10のWSLでX11アプリケーションを実行してみた インストール後,Xlaunchを起動しておきます. Docker イメージの実行 WSL2上で,makefileファイルがあるディレクトリ(ns3-docker-34)に移動後, $ make run を実行することで,Dockerコンテナを起動し中に入ることができます. Dockerコンテナ内で以下のコマンドを実行し,環境変数にホスト(Windows)のIPアドレスを設定します. 以下のコマンドのIPアドレスは適宜書き換えてください. # export DISPLAY=192.168.10.11:0.0 その後,ns-3のwafファイルがあるディレクトリに移動してサンプルコードを実行します. # cd /usr/ns-allinone-3.34/ns-3.34 # ./waf --pyrun src/flow-monitor/examples/wifi-olsr-flowmon.py --vis 以下のようにVisualizerが起動すればひとまず成功です.お疲れさまでした. モジュール等のエラーは各自修正してみてください. 参考文献 あとがき Ubuntu 20.04のDocker イメージを使うとVisualizerの依存関係にあるライブラリがすんなり入ってくれないので18.04のサポート期間中はおとなしく18.04使ったほうが楽です.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac】Docker+rails6+MySQLでの環境構築完全版

環境 MacOS Big Sur 11.5.2 ruby 3.0.2 rails 6.1.4 Docker 20.10.8 MySQL 8.0.23 ディレクトリ myapp 全て現時点(2021/09/06)での最新バージョンです。 1.用意するファイル ・Dockerfile ・Gemfile ・Gemfile.lock ・entrypoint.sh ・docker-compose.yml Dockerfile FROM ruby:3.0.2 RUN apt-get update -qq && apt-get install -y nodejs # yarnパッケージ管理ツールをインストール # https://classic.yarnpkg.com/en/docs/install/#debian-stable RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update && apt-get install yarn WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install COPY . /myapp # Add a script to be executed every time the container starts COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"] ここでyarnをインストールしておくのがポイントです。しないと後でwebpackerがインストールできずエラーになります。 Gemfile source 'https://rubygems.org' gem 'rails', '~>6' Gemfile.lockは空のままで大丈夫です entrypoint.sh #!/bin/bash set -e # Remove a potentially pre-existing server.pid for Rails. rm -f /myapp/tmp/pids/server.pid # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@" docker-compose.yml version: "3" services: db: image: mysql:8.0 command: mysqld --default-authentication-plugin=mysql_native_password environment: MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password ports: - 3306:3306 volumes: - ./tmp/db:/var/lib/mysql web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" environment: MYSQL_HOST: db volumes: - .:/myapp ports: - "3000:3000" depends_on: - db 2.実行 $ docker-compose run web rails new . --force --no-deps --database=mysql ↓ $ docker-compose build ↓ ここでdatabase.ymlを編集します config/database.yml default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: <%= ENV.fetch("MYSQL_ROOT_PASSWORD", "root") %> host: db development: <<: *default database: myapp_development test: <<: *default database: myapp_test production: <<: *default database: myapp_production username: myapp password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> パスワードなど設定した後データベースと接続します。 $ docker-compose run web rake db:create ↓ $ docker-compose up 終わったらlocalhost:3000とネットで検索すればこの画面が出てきます。 そしたら環境構築成功です! おわりに 未経験でしかも初心者なのでかなり苦労しましたが必要な情報は以上だけでした 一人でも多くの方の役に立てば嬉しいです 【Mac】Docker+rails6+postgreSQLでの環境構築完全版 PostgreSQLバージョンも作ったのでよかったら参考にしてください!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac】Docker+rails6+MySQLで環境構築中にaddress already in useと出たら?

環境 ・macOS Big Sur バーション11.5.2 ・シェル zsh ・Ruby 3.0.2 ・rails 6.1.4 ・My SQL 8.0.23 ・Docker 20.10.8 Docker file Dockerfile FROM ruby:3.0.2 RUN apt-get update -qq && apt-get install -y nodejs # yarnパッケージ管理ツールをインストール # https://classic.yarnpkg.com/en/docs/install/#debian-stable RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update && apt-get install yarn WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install COPY . /myapp # Add a script to be executed every time the container starts COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"] docker-compose.yml docker-compose.yml version: "3" services: db: image: mysql:8.0.26 command: mysqld --default-authentication-plugin=mysql_native_password environment: MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password ports: - 3306:3306 volumes: - ./tmp/db:/var/lib/mysql web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" environment: MYSQL_HOST: db volumes: - .:/myapp ports: - "3000:3000" depends_on: - db エラー内容 $ docker compose up ↓ Starting mysql_db_1 ... error ERROR: for mysql_db_1 Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use ERROR: for db Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use ERROR: Encountered errors while bringing up the project. 【Docker】Rails+MySQLの環境をDockerで構築中「ポートの衝突」に遭遇してから解決するまで こちらの記事を参考に2つの解決策を試してみるも解決できず、、、 エラーにはaddress already in useとあるので他にaddressが使われていないか調べていきます。 $ lsof -i:3306 ↓ COMMAND PID USER ... mysqld 117 SAKAE ... 出てきました!これを消せばいいわけです! 消すコマンドはこちら $ kill 117 それでもうまくいかない場合 探すとき $ sudo lsof -i:3306 or $ sudo lsof -i -P | grep "LISTEN" 消したい時 $ sudo kill <killしたいportのPID> それでもダメなら docker-compose.yaml ports: - "3306:3306" ↓ ports: - "3307:3306" このようにポート番号を変えることで解決できる場合もあります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

sbt native packager でビルドしたDockerイメージにファイルをコピー

sbt native packager でビルドしたDockerイメージにファイルをコピーする Amazon Keyspacesに接続するために jksファイルをDocker Imageに含める必要があった。 Native packager の Docker plugin の設定にファイルのマッピングを含めればいいだけだった。 def dockerSettings: Seq[Setting[_]] = Seq( Docker / mappings += file("shared-resources/cassandra_truststore.jks") -> "opt/docker/cassandra_truststore.jks" )
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む