1. Kagoya で VPS 契約(OS:Ubuntu 22.04 LTS 推奨)
  2. SSH でログイン
  3. Docker / Docker Compose をインストール
  4. Git または SFTP でプロジェクトを配置
  5. docker-compose.yml を置いて docker compose up -d
  6. ファイアウォール(80/443)開放
  7. ドメイン・SSL(Let’s Encrypt)設定
  8. データ(DBボリューム)永続化設定

① Kagoya の VPS 契約時の OS

Kagoya の VPS は
Ubuntu 22.04 LTS(64bit)
を選ぶのが最も Docker 運用に向いています。


②SSH 鍵を使ってログイン

ssh -i ~/.ssh/your_key root@YOUR_SERVER_IP

Kagoyaの場合、コントロールパネルで SSH 鍵かパスワードが確認できます。


③ Docker / Docker Compose をインストール

Kagoya の VPS はクリーンな Linux のため、公式手順で入ります。

■ Docker 公式インストール

apt update
apt install -y ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

■ インストール確認

docker --version
docker compose version

④ プロジェクトを Kagoya VPS に置く

A. Git で置く(おすすめ)

git clone https://github.com/xxxx/your-laravel-project.git /var/www/your-app

B. SFTP/FTP で手動アップロードも可能

コントロールパネルで FTP/SFTP が有効化できます。


⑤ docker-compose.yml を配置

Laravel用の標準構成例を置きます。

例:/var/www/your-app/docker-compose.yml

cat << 'EOF' | sudo tee /var/www/your-app/docker-compose.yml
version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: laravel_app
    volumes:
      - .:/var/www
    depends_on:
      - mysql

  web:
    image: nginx:latest
    container_name: nginx_web
    ports:
      - "80:80"
    volumes:
      - .:/var/www
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - app

  mysql:
    image: mysql:8
    container_name: mysql_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: laravel
    volumes:
      - db_volume:/var/lib/mysql

volumes:
  db_volume:
EOF


⑥ Nginx 設定(docker 内)

nginx/conf.d/default.conf を作る:

sudo mkdir -p /var/www/your-app/nginx/conf.d

cat << 'EOF' | sudo tee /var/www/your-app/nginx/conf.d/default.conf
server {
    listen 80;
    index index.php index.html;
    server_name _;

    root /var/www/public;

    location / {
        try_files \$uri \$uri/ /index.php?\$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
    }
}
EOF

⑦ Laravel の Dockerfile

Dockerfile(プロジェクト直下)

cat << 'EOF' | sudo tee /var/www/your_app/Dockerfile
FROM php:8.2-fpm

# 必要なパッケージ
RUN apt-get update && apt-get install -y \
    git unzip libpq-dev libzip-dev zlib1g-dev \
    && docker-php-ext-install pdo pdo_mysql zip

# Composer copy
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

# 作業ディレクトリ
WORKDIR /var/www

# プロジェクトファイルコピー
COPY . .

# 権限を調整
RUN chown -R www-data:www-data /var/www \
    && chmod -R 755 /var/www

# composer install(no-dev)
RUN composer install --no-dev --optimize-autoloader --no-interaction

# Laravel の .env が無ければ作成
RUN if [ ! -f .env ]; then cp .env.example .env; fi

# key:generate(失敗してもOK)
RUN php artisan key:generate || true

CMD ["php-fpm"]
EOF



cat << 'EOF' | sudo tee .env.example
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

EOF

⑧ コンテナ起動

docker compose up -d

状態確認

docker compose ps

⑨ Kagoya のファイアウォール(セキュアコントロールパネル)

Kagoya の VPS には「ポート制限」があるので、
80 / 443 を許可する必要があります。

コントロールパネル →
「VPS設定」→「ポートフィルタ」→
✔ 80 (HTTP)
✔ 443 (HTTPS)
を ON にする


カテゴリー: 未分類