- 問題 - ローカル環境変数設定 - エディタ周り
- 問題 - tasks.jsonで色々コマンド使いたい - エディタ周り
- 問題 - yo aspnetで作られたDockerfileを使ってみたけどrestoreでこける - 開発周り
問題 - ローカル環境変数設定 - エディタ周り
状況
プログラム内で環境変数が欲しい時があって,そのプロジェクトのデバッグの時とか使う時のみで設定したい. VSCode内のTaskでsourceとかしてもデバッガ起動する時の設定のlaunch.jsonを実行するshellは別物だから環境変数が引き継がれないという問題に直面.
解決策
${workspaceRoot}/.vscode以下にsettings.jsonを追加する.そこに目的の環境変数を入れ込む.
{ "WEB.TOKEN": "hoge", "WEB.KEY": "fuga" }
launch.jsonからは
... "env": { "TOKEN": "${config.WEB.TOKEN}", "KEY": "${config.WEB.KEY}" }, ...
問題 - tasks.jsonで色々コマンド使いたい - エディタ周り
状況
.NET のプロジェクトを読み込んで自動的に作られたtasks.jsonでbuild以外のコマンドをしたくて,buildのargs内に ; で区切ってシェルコマンドを入れたけどダメだった.
解決策
そもそもトップにあるコマンドが "command": "dotnet"
だからってこと.ここをMac/Linuxユーザは"sh"とかに変えておけばいい感じだった.
そしてコマンドを実行するために,その下にあるargsを "args": [ "-c" ]
に変更.
これで万事解決かと思いきやそうではなく,tasksの要素にsuppressTaskName
が含まれていないもしくはfalseになっている場合task名が第一引数として渡される.
"command": "dotnet", "args", [], "tasks" : [ { "taskName": "build", "args": [ "${workspaceRoot}/project.json" ] }
みたいになっていると,dotnet build ${workspaceRoot}/project.json
として実行されるということ.
コマンド名と関係ないtask名をつけるのであれば,"suppressTaskName": true
として設定するといい.
結局こんな形になった(上の環境変数を設定しようとしてダメだったやつが含まれてる)
{ "version": "0.1.0", "command": "sh", "isShellCommand": true, "showOutput": "always", "args": [ "-c" ], "tasks": [ { "taskName": "build", "suppressTaskName": true, "args": [ "dotnet build ${workspaceRoot}/project.json" ], "isBuildCommand": true, "problemMatcher": "$msCompile" }, { "taskName": "set-env", "suppressTaskName": true, "args": [ "source ${workspaceRoot}/.token_env" ] } ] }
問題 - yo aspnetで作られたDockerfileを使ってみたけどrestoreでこける - 開発周り
状況
2016/12/3現在yo aspnetで作られるDockerfileは以下のとおり
FROM microsoft/dotnet:latest COPY . /app WORKDIR /app RUN ["dotnet", "restore"] RUN ["dotnet", "build"] EXPOSE 5000/tcp CMD ["dotnet", "run", "--server.urls", "http://*:5000"]
テンプレートで吐き出されるのはバージョンが1.0.1のものだけれども,今のlatestは1.1.0なのでそのあたりでも怒られる.
解決策(正しいかは別
諦めた
FROM microsoft/aspnetcore:1.0.1 COPY ./out/ /app WORKDIR /app EXPOSE 80 ENTRYPOINT ["dotnet", "アプリ名.dll"]
で,このDockerfileでイメージをbuildする前にdotnet publish -c Release -o out
って感じで${ProjectRoot}/out 以下に吐き出す.
これでデプロイできた.
Dockerとかコピペでcompose叩いてたからコマンドほとんど分からなくて疲れた
なにか詰まったら随時追加していきます.