92213


## PCの環境

使用OS:Windows11  
Docker:Docker Desktop for Windows

## 実施したこと

1.以下のDockerfileを使用

[code]

    FROM golang:1.18
    
    ENV TZ /usr/share/zoneinfo/Asia/Tokyo
    
    ENV ROOT=/go/src/app
    WORKDIR ${ROOT}
    
    
    ENV GO111MODULE=on
    
    COPY . .
    EXPOSE 8080
    
    RUN go install github.com/cosmtrek/air@latest
    CMD ["air"]
    
[/code]

2.ターミナルのログ  
[![ターミナルのログ](https://i.stack.imgur.com/WqZMP.png)](https://i.stack.imgur.com/WqZMP.png)

起動はしてるようだが、ここでGoのファイルに変更を加えてもホットリロードされない

誰か原因がわかる有識者の方、解決法をご教示いただけると幸いです。


CC BY-SA 4.0
2022-11-13T03:06:24.750
92191
2022-11-14T03:22:04.423
55362
question
windows docker go
Goのairの環境構築でDockerを使った場合、airが機能しない件について


# 起きていること

「Goのair」は、ソースコードを変更したときに自動でそれを検知し、アプリケーション（ここでは[Echo](https://github.com/labstack/echo)
）を再起動するツールです。  
[GitHub - cosmtrek/air: ☁️ Live reload for Go
apps](https://github.com/cosmtrek/air)

いっぽう、Dockerはソースコードからイメージをビルドし、同じ状態から起動・実行できるのを特徴としています。

記載されているDockerfile の中で、 `COPY . .`
としている行のタイミングで現在のソースコードをDockerイメージにコピーし、Dockerコンテナはこのコードで実行されています。  
このため、手元でコードを編集しても、Docker内部のairはそれを検知できず、結果ホットリロードされない、という形になっています。

# 解決方法

コンテナを使わないか、開発環境ディレクトリをマウントするかの2種類の方法が考えられます。


CC BY-SA 4.0
2022-11-14T03:22:04.423
92213
2022-11-14T03:22:04.423
29826
92191
answer