🦁

Go とローカル開発(DNS編)

2022/07/20に公開約2,200字

下記の続きです

https://zenn.dev/cava_miku/articles/go_local_env_docker

対象

Go のローカル開発でドメインを利用したい方向けです

デバッグ方法
- curl localhost:8080
+ curl local-api.kikunavi.net

ドメイン所有しており、あるサブドメインに A レコード 127.0.0.1 を登録済である必要があります

方法

前回作成した auth, payment に加え、Nginx を追加するため、docker-compose.yaml を変更しましょう

構成
構成
.
├── backend
│   ├── auth
│   ├── payment
+│   └── nginx
+│       └── main.conf
└── local
Compose
./local/docker-compose.yaml
version: "3.8"
services:
  # ---
  auth:
    container_name: auth
    working_dir: /go/auth
    image: go-local
    ports:
      - 8080:8080
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ../backend/auth:/go/auth
    restart: always
    command: bash -c "air"
  # ---
  payment:
    container_name: payment
    working_dir: /go/payment
    image: go-local
    ports:
      - 8081:8080
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ../backend/payment:/go/payment
    restart: always
    command: bash -c "air"
+  # ---
+  proxy:
+    image: arm64v8/nginx:1.23-alpine
+    container_name: proxy
+    ports:
+      - 80:80
+    volumes:
+      - ../backend/nginx/nginx.conf:/etc/nginx/nginx.conf
nginx.conf
./backend/nginx/nginx.conf
user nginx;

events {
    worker_connections 1024;
}

http {
    server {
        listen 80;
        # ご自身のドメインに変更してください
        server_name local-auth.kikunavi.net;

        location / {
            resolver 127.0.0.11 valid=30s;
            set $upstream_auth auth;
            proxy_pass http://$upstream_auth:8080;
        }
    }

    server {
        listen 80;
        # ご自身のドメインに変更してください
        server_name local-payment.kikunavi.net;

        location / {
            resolver 127.0.0.11 valid=30s;
            set $upstream_payment payment;
            proxy_pass http://$upstream_payment:8080;
        }
    }
}

確認

ドメインがない場合、etc/hosts に下記を記載すれば確認できます

/etc/hosts
127.0.0.1   local-auth.kikunavi.net
127.0.0.1   local-payment.kikunavi.net
確認(例)
$ docker compose -f local/docker-compose.yaml up
$ curl local-auth.kikunavi.net
this is auth

どうでしたか、次回はローカルで SSL する方法を予定しています。

Discussion

ログインするとコメントできます