雷って幻想的だよね?

宗教:C#、ラノベ好きの戯言です。※Google Analytics 埋め込みを利用しています。

Docker MySQL docker-composeでの実行と、バックアップとリストア

参考にしたサイト:
https://qiita.com/A-Kira/items/f401aea261693c395966

動作確認:

Windows10 Pro build 17763
docker -v :Docker version 18.09.2, build 6247962
docker-compose -v:docker-compose version 1.23.2, build 1110ad01

docker-compose.ymlの中身
${}は環境変数Windowsはシステムからの設定、Linuxは.evn)

version: '3'
services:
# MySQL
db:
image: mysql:5.7
container_name: db_host
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD_SETTING}
MYSQL_DATABASE: ${MYSQL_DATABASE_SETTING}
MYSQL_USER: ${MYSQL_USER_SETTING}
MYSQL_PASSWORD: ${MYSQL_PASSWORD_SETTING}
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
ports:
- 3306:3306
# phpMyAdmin
phpmyadmin:
container_name: php
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOSTS=db_host
- PMA_USER=root
- PMA_PASSWORD=${MYSQL_ROOT_PASSWORD_SETTING}
ports:
- 8080:80

docker起動
※docker-compose.ymlがあるフォルダに移動していること

docker-compose up -d
# 確認する際は、「-d」なしで実行する

MySQLのダンプを復元

docker cp .\db_host.sql db_host:/tmp/dump.sql
docker exec -it db_host bash
mysql -u root -p < /tmp/dump.sql

MySQLのダンプを作成

docker exec -it db_host bash
mysqldump --databases rairairai -uroot -p > dump.sql
exit
docker cp db_host:dump.sql dump.sql

※shで完結できないかなぁ…

dockerの終了

docker-compose down -v

docker-composeで.evnのWindowsでの設定位置

dockerを利用して、サーバーとローカル環境のを同じにしたいと思って調べたけど、簡単には出てこなかったので、メモ。

参考:
Windows環境における docker-compose の .env と 環境変数の優先順位 - Qiita


Windowsの通常の環境変数設定

ホーム→システム→システム情報→システムの詳細設定→環境変数
ユーザの環境変数に追加して、PC再起動

または

SETX 変数名 値

※PCの再起動を行わないと、反映されない。

以上。

Blazor Preview5 から Preview6へ

CentOSによるDockerの確認はしていないです。

参考:
ASP.NET Blog | ASP.NET Core and Blazor updates in .NET Core 3.0 Preview 6

リリースノート:
core/3.0.0-preview6.md at master · dotnet/core · GitHub

 ・DockerImageも更新されるので注意!(Alpineは更新されてた・・・)

内容:
SDKの更新:忘れてビルドがエラーになってた・・・
https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-3.0.100-preview6-windows-x64-installer

VisualStudioは2019 Verは16.2が必要とのこと。
Preview でないと、16.2がリリースされていませんので注意してください(2019/07/07)

内容:
Nugetで関連する物を「3.0.0-preview6.19307.2」に更新する
(各ソリューションで2個変更する)

Blazorの内部の更新内容:(サンプルの変更点で実際に新しいのは動く)
・全体:
・「@functions」を「@code」に変更する
・「onclick」を「@onclick」にする

・デフォルトソース:*.Server/Startup.cs内

app.UseRouting();

app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
});

app.UseBlazor();

app.UseClientSideBlazorFiles();

app.UseRouting();

app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapFallbackToClientSideBlazor("index.html");
});

以上。

再度作成し直しを行えば、初期の物は動くので、それに合わせれば動くと思われる。

・・・ClientSideはまだ、デバッグできなかったけど・・・

Docker + Blazor 3.0 での実行

基本参考情報:
Blazor(C#)をDockerで動かす - altescy's project


上記は2.1での実行なので、3.0で作るとそのままは動かなかった。

そのため、Dockerfileを以下のように書き換えた

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-alpine AS Build

WORKDIR /app

COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out

EXPOSE 80

ENTRYPOINT ["dotnet", "out/プロジェクト名.Server.dll"]

とりあえず、Localhostでの実行できることを確認した。
FROMとENTRYPOINT が変わっているので注意が必要です。
Windowsで試すと警告が出るので、グローバルへの公開は設定等を見直してください。

以上。
実際にグローバルに公開できたらより詳しく記事にする予定です。

Blazor for VS2019

久しぶりでちょっと迷ったのでメモです。

以下から対象のVS2019 Core3.0をDLする。(ちょっと大きい)

私の時はv3.0.100-preview5
(2019/05/10 22:45)

dotnet.microsoft.com

ASP.NET COREを選択

ここでASP.NET CORE 3.0を選んでBlazorが無ければ拡張機能でBlkazorをいれればOK

Blazor(ASP.NET Core hosted)を選択
(Dockerがサポートされてないだと・・・!?)

そして、、、実行すると、、、
普通に表示される。

Dockerでもしかして実行できないのかなぁ・・・
0.7の時よりデフォルトがちょっとかっこよくなってる感じ。

デフォルトだと、ReSharperに指摘を受けるので、ちょっとどうするかは、検討が必要そう。
エラーいっぱいでウザい場合は、エラー一覧の表示をビルドのみに変更することをおすすめします。

英語の始め方はこちら

docs.microsoft.com

今更ながらDockerのチュートリアルをやってみた。

gradleもそうだけど、まず、触ってみる必要があるよね、知ったときに忘れないようにしないと・・・
自分のメモをかねて。

Docker チュートリアル(part1~4)
Get Started, Part 1: Orientation and setup | Docker Documentation

docker --version

ヘルプは

--help

をつける

実行

docker run hogehoge

イメージリスト

docker image ls --all

サーバーを立てて起動

docker run --interactive --tty ubuntu bash

起動中のDockerの確認

docker container ls --all

デタッチ

docker run --detach --publish 80:80 --name webserver nginx

コンテナのストップ

docker container stop hogehoge

lsのNameをせっとする

コンテナの削除

docker rm hogehoge

上記のストップ時のhogehogeと同じ

ビルド

docker build --tag=hogehoge

ポートを指定して起動

docker run -p 4000:80 friendlyhello

ログイン(イメージのプッシュなどで利用する)

docker login

タグ付け
docker tag イメージ名 リポジトリ名:タグ名
例:

docker tag friendlyhello taketakekaho/get-started:part2

プッシュ

docker push リポジトリ名:タグ名

Dockerのロードバランサーの初期化

docker swarm init

アプリに名称をつけて、Dockerへデプロイする

docker stack deploy -c docker-compose.yml getstartedlab

例:

docker stack deploy -c docker-compose.yml getstartedlab

サービスの一覧(バランサーの一覧???)

docker service ls

サービスタスクの一覧を表示

docker service ps getstartedlab_web

サービスを停止して切り離す

docker stack rm getstartedlab


【環境準備】

↑をするためにはVMの作成が必要 windows10/Hyper-V
Hyper-Vマネージャーを起動
PC名を選択状態にして、メニューの操作から「仮想スイッチマネージャー」を選択
「外部」を選択して「仮想スイッチの作成」を行う
が、「docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1」のコマンドでも良いらしい

・名前を「myswitch」にする。(サンプルコマンドを動かすため)
ネットワークアダプターの共有のチェックボックスがチェックされていることを確認する


配置(Hyper-Vに配信):コマンドプロンプトを管理者権限にする

docker swarm init
↑もしかしたらいらないかも(環境準備していなくてエラーになっていたので・・・)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm2

VMのリスト表示

docker-machine ls

swarmの初期化と、ノードの追加

docker-machine ssh myvm1 "docker swarm init --help"
docker-machine ssh myvm1 "docker swarm init --advertise-addr マシンのIPアドレス:2376"
※例:
 docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2376"

docker-machine ssh myvm2 "docker swarm join \

    • token \

<マシンのIPアドレス>:2377"
↑改行はなくすこと

docker-machine ssh myvm1 "docker node ls"

解放する場合は

docker swarm leave

コマンドで行う(2つとも)

クラスター群にデプロイする
「docker-compose.yml」を作成したフォルダに移動して、以下のコマンド行う(Part3で作ってるはず)

docker-machine env myvm1

※ポート番号には注意!(後で開かなくて???となってたので)

なんかサンプルと違うけど以下のコマンドを実行する
@FOR /f "tokens=*" %i IN ('docker-machine env myvm1') DO @%i
※このコマンドは一つ前のコマンドの実行結果で表示されている内容です。
これでアクティブになった。

デプロイする

docker stack deploy -c docker-compose.yml getstartedlab
docker stack ps getstartedlab

または、ログインして持ってくる

docker login
docker stack deploy --with-registry-auth -c docker-compose.yml getstartedlab

docker-machine ls
でIPを確認して、ブラウザで開く
※ポートはそのままの流れで来ていると4000番なので注意

削除

docker stack rm getstartedlab

開始と停止

docker-machine stop myvm1
docker-machine start myvm1
docker-machine restart myvm1

参考:
https://qiita.com/taketakekaho/items/62aee171c942af323b4c
↑途中で諦めてる・・・残念

※以下のサイトの<>でくくられているところは置き換え前提の箇所とのこと(by:https://github.com/docker/machine/issues/4303
https://docs.docker.com/get-started/part1/
https://docs.docker.com/get-started/part2/
https://docs.docker.com/get-started/part3/
https://docs.docker.com/get-started/part4/
swarmに関して
http://docs.docker.jp/swarm/overview.html
docker stackに関して
https://medium.com/@Akitsuyoshi/docker-%E3%81%AEstack%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-f58db0202673

GoLandの日本語化

忘れないようにメモ
※環境:Windows10

※以下のToolboxを入れていると、公式通りで良いかも・・・
GoLandのインストールと起動 - ヘルプ | GoLand


まず、GoLandをインストール。

JetBrains 製品の日本語化マニュアル - IntelliJ IDEA

より、WindowsのPleadesの日本語化ファイルを取得する

http://ftp.jaist.ac.jp/pub/mergedoc/pleiades/build/stable/pleiades-win.zip
多分これ。

で、解答すると中に、
「setup.exe」が存在する。

ので、これを起動する。

そうすると、アプリの選択が表示されるので、ディスクトップに作成されているショートカットから、
「ファイルの場所を開く」
を選択し、そのフォルダアドレスを
setup.exeのアプリ設定のダイアログに打ち込んで、対象として「goland64.exe」を選択する。
そうするとそれ以外の項目も自動ではいるのでそのまま進める。

完了すると、日本語化されていた。

・・・公式さん、説明が冗長ではありませんか・・・・
dotnetCoreみたいに簡潔でいい気がします(すっごい簡潔化されてるけど・・・)
(ついでに、Toolboxの中にないし、というか、Toolboxのフォルダがないし・・・びっくりしたよ・・・)

以上です。

追記:2019/03/04

一度Uninstallしてから、Toolboxでインストールしてファル構造を以下にして実行したら、動いた。

【構成】

test
└hello.go

【hello.goの中身】

package main

import "fmt"

func main(){
fmt.Printf("Hello, world\n")
}

コンソールに以下みたいなのが表示される

API server listening at: 127.0.0.1:51031
Hello, world

Debugger finished with exit code 0

以上。
なぜ前回だめだったのかはよくわからない。
日本語化はおんなじようにしてOKでした。