hugoをDockerで作り直した

· ·

Docker を学び直し 🔗

Docker は他の人のコピー程度しかいじれなかったということもありますが、4 連休に少しだけ復習と docker-composer まわりを調べていました。ちょうどローカル環境を作り直したいと思っていたのと、今までローカルを汚染しすぎていたので、このタイミングでキレイにしたいという気持ちから。

(参考)たった 1 日で基本が身に付く! Docker/Kubernetes 超入門

環境 🔗

  • OS : Linux / ChromeOS
  • Distribution : Debian buster

Dockerfile 🔗

もうちょっと改善しないと駄目そうだけど、一通り本を読んでからサイトを参考にしつつこんな感じで。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: '3'
services:
    hugo:
        user: "${UID}:${GID}"
        image: klakegg/hugo:0.74.3-ext-alpine
        volumes:
            - /etc/group:/etc/group:ro
            - /etc/passwd:/etc/passwd:ro
            - ../hugo:/src
        ports:
            - 1313:1313
        tty: true
        working_dir: /src
        command: shell

    firebase-tools:
        user: "${UID}:${GID}"
        image: andreysenov/firebase-tools
        volumes:
            - /etc/group:/etc/group:ro
            - /etc/passwd:/etc/passwd:ro
            - ../hugo:/src
        ports:
            - 9005:9005
            - 5000:5000
        tty: true
        working_dir: /src
        command: sh

.env ファイルは id コマンドで調べてこれを詰めています。User が root でファイルが生成されるという事象にも漏れなくハマりました。

1
2
UID=1000
GID=1000

本サイト 2020 年 9 月現在、URL は特にデフォルトのままにしているので分かるかと思いますが、firebase hosting を利用しているため hugo のコンテナと firebase のコンテナイメージを利用し、firebase login 用の 9005 ポートと firebase hosting 用の 5000 ポート、hugo は 1313 ポートを穴あけしました。

depend がないのに compose で2つを一気に作る必要あるの?という感じはあります。

tree 🔗

1
2
blog --- Docker
      +- hugo

現在の課題点 🔗

当たり前のようなことを書きますが、hugo のコンテナは hugo の操作しかできず、firebase は firebase しか操作できないので hugo && firebase deploy という一気に操作をすることができません。このあたりは色々ドキュメントがありそうだなと思ったので個人で色々試した後だしカンニングしようかと思います。

ちょっと思うのは hugo 自体は go ベースだし compose で build 用だけは別にしてみても良いのかも?と思ったりしながら作っていました。

本(たった 1 日で基本が身に付く! Docker/Kubernetes 超入門) は飛ばし飛ばし… 🔗

この本「たった 1 日で基本が身に付く! Docker/Kubernetes 超入門」は他の本に比べて実践的だし、最初から読み進めていると何度も打ってるコマンドは進むに従って少しずつ省略される具合がちょうどよくてコマンドを覚えていくにもとても良い本でした。

ただ Windows 機でやっていないので最初の方にあった centos を 3 つ立ち上げて ssh を行う部分と CI/CD まわりは Debian 環境だと別ネットワーク作って centos を個別に立てて〜とやっていたのですが、色々ハマりつつ調べながらやっていました。ウェブで検索したサイトだと Docker ファイルで一気に構築するもので本書で順を追って実装するには不向きだったり、ssh の service start で Docker ファイルがコケたり色々あって途中で諦めました。

Virtual Box や Hyper-V を使ったやりかたしか書かれていないかなーと思っていますが、もしかしたらサンプルで配布されている Dockerfile 等を見ればすぐ使えそうなコードがあるかもしれません。このあたりだけで何時間か潰れてしまったので実装せず読み飛ばしてしまったという感じです。

K8s の章もまだ読んでいないので、ここだけは読もうかなと思います。

本書を読んで全体把握してからDocker Hubで hugo だったり firebase のイメージを利用していたのですが、それでもちゃんと理解していない部分も多かったのか結構手間取ってしまいました。落ち着いたタイミングで gitignore ファイルを作って github でブログ記事も管理しようかなと思っています。

参考にしたサイト 🔗

Docker で Hugo 環境構築

comments powered by Disqus