- Kagoya で VPS 契約(OS:Ubuntu 22.04 LTS 推奨)
- SSH でログイン
- Docker / Docker Compose をインストール
- Git または SFTP でプロジェクトを配置
- docker-compose.yml を置いて
docker compose up -d - ファイアウォール(80/443)開放
- ドメイン・SSL(Let’s Encrypt)設定
- データ(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 にする