ローカル開発環境で動いていたdockerコンテナをvpsサーバで動かそうとするとハマったのでメモ。
この環境にはすでに8000番で他のサービスが動いており、全然違うミドルウェアを使うので隔離したかった。
まだ本番特有のセキュリティとかはできていない。
とにかくローカルと同様にブラウザからアクセスできるようにするところまでできたのでメモ。
さくらVPSサーバ固有の設定があったため、他のサーバだとそちらのコンパネなりを調べる必要がありそうです。
Portを解放する
今回はdocker-compose.yml のwebコンテナで 8081番をしている前提です。
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb
restart: always
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${ENV_MYSQL_ROOT_PASSWORD} # .envファイルに環境変数を設定
- MYSQL_PASSWORD=${ENV_MYSQL_PASSWORD} # .envファイルに環境変数を設定
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
ports:
- 8081:80
links:
- db
volumes:
- nextcloud:/var/www/html
restart: always
(END)
ENV_MYSQL_ROOT_PASSWORD=root
ENV_MYSQL_PASSWORD =root
CentOSのfirewallで対象のPortを開く
sudo firewall-cmd --permanent --zone=public --add-port=8081/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
--list-all でportの行に8081が追加されていたら成功。
が、これでアクセスできるかと思ったらさくらVPSでは以下の手順も必要だった。
さくらVPSのコントロールパネル サイトへアクセスする。
サーバを選択して、
タブからグローバルネットワークを選択
パケットフィルタを設定を押下
カスタムで開きたいポートを追加登録する。
ここでは8081
初回はdocker本体をインストールする。
確かこの人の言う通りにやったら特につまらずインストールできたので、コピペさせてもらって入れてください。
ローカル環境で使用したdocker-comopse.ymlなどを任意のフォルダを作って用意する。
mkdir NetCloud-Docker
cd NetCloud-Docker
vim docker-compose.yml
vim .env
今回のイメージはこれだけで動くものなので、はじめに書いた内容をvimで貼り付ければ動く。
git cloneとかが必要なプロジェクトでもローカルで動いた構成と同じものを用意する。
立ち上げる
sudo docker-compose up -d
sudo docker ps
アプリ側が8081番を待ち受けているか確認
netstat -tanp
以下のような表示がされていたら8081で待機できている。
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN -
ブラウザからアクセスする
http://{IPアドレス}:8081