🦔

Docker+nginxでGCEに静的ページをデプロイする

2020/11/02に公開

SDKのインストール

プロジェクト作成

インスタンス作成 ~ Docker環境構築

ディレクトリ構成

.
├── my_site
│ ├── index.html
│ ├── js
│ │ └── script.js
│ └── css
│ └── style.css
└── docker
├── Dockerfile
└── server.conf

サーバ設定ファイル

docker/server.conf
server {
  listen 80;
  server_name xx.xxx.xx.xxx; # <- インスタンスの外部IP

  server_tokens off;

  access_log /root/logs/access.log;
  error_log /root/logs/error.log;

  location / {
    root /root/public;
  }
}

Dockerfile

docker/Dockerfile
FROM nginx

RUN mkdir /root/logs

RUN chmod 755 -R /root

COPY ./server.conf /etc/nginx/conf.d/default.conf

CMD ["nginx", "-g", "daemon off;"]

ローカルファイルをGCEへ転送

$ scp -r -i ~/.ssh/path/to/id_rsa ./website GCPログインユーザ名@インスタンス外部IP(or ~/.ssh/configで設定したHostの文字列):/home/<ログインユーザ>/website
$ scp -r -i ~/.ssh/path/to/id_rsa ./docker GCPログインユーザ名@インスタンス外部IP(or ~/.ssh/configで設定したHostの文字列):/home/<ログインユーザ>/docker

転送先ディレクトリがない場合は自動で作成される

dockerイメージビルド

$ docker build -t simple_nginx .

コンテナ起動

$ docker run -it -p 80:80 --name webui_demo --mount type=bind,src=/home/ログインユーザーディレクトリ/__web_ui,dst=/root/public simple_nginx

権限変更

cssやjsなど一部の静的ファイルで403エラー。
ファイルのアクセス権限変更で解決。

$ chmod 755 ./Dropzone.js_files

Discussion