dev #2
@@ -64,8 +64,8 @@ jobs:
|
|||||||
docker compose down || true
|
docker compose down || true
|
||||||
docker image prune -f
|
docker image prune -f
|
||||||
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
||||||
export DOMAIN=dev.merchbay.app
|
export DOMAIN=dev-admin.merchbay.app
|
||||||
export APP_URL=https://dev.merchbay.app
|
export APP_URL=https://dev-admin.merchbay.app
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
sleep 10
|
sleep 10
|
||||||
docker compose exec -T app php artisan migrate --force
|
docker compose exec -T app php artisan migrate --force
|
||||||
@@ -74,7 +74,7 @@ jobs:
|
|||||||
docker compose exec -T app php artisan view:cache
|
docker compose exec -T app php artisan view:cache
|
||||||
rm -f /tmp/merchbay_admin_dev.tar.gz /tmp/docker-compose.yml
|
rm -f /tmp/merchbay_admin_dev.tar.gz /tmp/docker-compose.yml
|
||||||
echo 'Development deployment completed successfully!'
|
echo 'Development deployment completed successfully!'
|
||||||
echo 'Application available at: https://dev.merchbay.app'
|
echo 'Application available at: https://dev-admin.merchbay.app'
|
||||||
"
|
"
|
||||||
env:
|
env:
|
||||||
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||||
@@ -85,4 +85,4 @@ jobs:
|
|||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
sleep 10
|
sleep 10
|
||||||
curl -f https://dev.merchbay.app || exit 1
|
curl -f https://dev-admin.merchbay.app || exit 1
|
||||||
|
|||||||
@@ -93,13 +93,13 @@ mkdir -p /var/www/merchbay_admin_dev
|
|||||||
cat > /var/www/merchbay_admin_dev/.env << 'EOF'
|
cat > /var/www/merchbay_admin_dev/.env << 'EOF'
|
||||||
APP_ENV=staging
|
APP_ENV=staging
|
||||||
APP_DEBUG=false
|
APP_DEBUG=false
|
||||||
APP_URL=https://dev.merchbay.app
|
APP_URL=https://dev-admin.merchbay.app
|
||||||
DB_HOST=localhost
|
DB_HOST=localhost
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_DATABASE=merchbay_dev
|
DB_DATABASE=merchbay_dev
|
||||||
DB_USERNAME=merchbay_user
|
DB_USERNAME=merchbay_user
|
||||||
DB_PASSWORD=your_dev_password
|
DB_PASSWORD=your_dev_password
|
||||||
DOMAIN=dev.merchbay.app
|
DOMAIN=dev-admin.merchbay.app
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod 600 /var/www/merchbay_admin_dev/.env
|
chmod 600 /var/www/merchbay_admin_dev/.env
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ All deployments use the external network: `traefik-public`
|
|||||||
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
||||||
```
|
```
|
||||||
|
|
||||||
## Development (dev.merchbay.app) - Automatic SSL
|
## Development (dev-admin.merchbay.app) - Automatic SSL
|
||||||
|
|
||||||
Development uses Let's Encrypt for automatic SSL certificate generation.
|
Development uses Let's Encrypt for automatic SSL certificate generation.
|
||||||
|
|
||||||
@@ -133,13 +133,13 @@ docker compose logs traefik | grep -i cert
|
|||||||
|
|
||||||
File: `docker-compose.portainer.dev.yml`
|
File: `docker-compose.portainer.dev.yml`
|
||||||
|
|
||||||
- Domain: `dev.merchbay.app`
|
- Domain: `dev-admin.merchbay.app`
|
||||||
- SSL: Let's Encrypt (automatic)
|
- SSL: Let's Encrypt (automatic)
|
||||||
- Certificate Resolver: `letsencrypt`
|
- Certificate Resolver: `letsencrypt`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
labels:
|
labels:
|
||||||
- "traefik.http.routers.merchbay-admin-dev.rule=Host(`dev.merchbay.app`)"
|
- "traefik.http.routers.merchbay-admin-dev.rule=Host(`dev-admin.merchbay.app`)"
|
||||||
- "traefik.http.routers.merchbay-admin-dev.tls.certresolver=letsencrypt"
|
- "traefik.http.routers.merchbay-admin-dev.tls.certresolver=letsencrypt"
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ DEPLOY_PORT=22
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Check certificate issuer (should be Let's Encrypt)
|
# Check certificate issuer (should be Let's Encrypt)
|
||||||
echo | openssl s_client -servername dev.merchbay.app -connect dev.merchbay.app:443 2>/dev/null | openssl x509 -noout -issuer
|
echo | openssl s_client -servername dev-admin.merchbay.app -connect dev-admin.merchbay.app:443 2>/dev/null | openssl x509 -noout -issuer
|
||||||
# Should show: issuer=C = US, O = Let's Encrypt, CN = R3
|
# Should show: issuer=C = US, O = Let's Encrypt, CN = R3
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -216,7 +216,7 @@ echo | openssl s_client -servername merchbay.app -connect merchbay.app:443 2>/de
|
|||||||
|
|
||||||
### Verify in Browser
|
### Verify in Browser
|
||||||
|
|
||||||
1. Visit https://dev.merchbay.app
|
1. Visit https://dev-admin.merchbay.app
|
||||||
- Certificate should be issued by "Let's Encrypt Authority X3"
|
- Certificate should be issued by "Let's Encrypt Authority X3"
|
||||||
|
|
||||||
2. Visit https://merchbay.com
|
2. Visit https://merchbay.com
|
||||||
@@ -235,7 +235,7 @@ ls -l /path/to/letsencrypt/acme.json
|
|||||||
# Should be: -rw------- (600)
|
# Should be: -rw------- (600)
|
||||||
|
|
||||||
# Check DNS
|
# Check DNS
|
||||||
dig dev.merchbay.app +short
|
dig dev-admin.merchbay.app +short
|
||||||
# Should return your server IP
|
# Should return your server IP
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@ Before certificate expiration:
|
|||||||
|
|
||||||
```
|
```
|
||||||
Type: A
|
Type: A
|
||||||
Name: dev.merchbay.app
|
Name: dev-admin.merchbay.app
|
||||||
Value: YOUR_SERVER_IP
|
Value: YOUR_SERVER_IP
|
||||||
TTL: 3600
|
TTL: 3600
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- APP_ENV=staging
|
- APP_ENV=staging
|
||||||
- APP_DEBUG=false
|
- APP_DEBUG=false
|
||||||
- APP_URL=https://dev.merchbay.app
|
- APP_URL=https://dev-admin.merchbay.app
|
||||||
- DB_CONNECTION=mysql
|
- DB_CONNECTION=mysql
|
||||||
- DB_HOST=your-mysql-host
|
- DB_HOST=your-mysql-host
|
||||||
- DB_PORT=3306
|
- DB_PORT=3306
|
||||||
@@ -24,13 +24,13 @@ services:
|
|||||||
- app_uploads_dev:/var/www/html/public/uploads
|
- app_uploads_dev:/var/www/html/public/uploads
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.merchbay-admin-dev.rule=Host(`dev.merchbay.app`)"
|
- "traefik.http.routers.merchbay-admin-dev.rule=Host(`dev-admin.merchbay.app`)"
|
||||||
- "traefik.http.routers.merchbay-admin-dev.entrypoints=websecure"
|
- "traefik.http.routers.merchbay-admin-dev.entrypoints=websecure"
|
||||||
- "traefik.http.routers.merchbay-admin-dev.tls=true"
|
- "traefik.http.routers.merchbay-admin-dev.tls=true"
|
||||||
- "traefik.http.routers.merchbay-admin-dev.tls.certresolver=letsencrypt"
|
- "traefik.http.routers.merchbay-admin-dev.tls.certresolver=letsencrypt"
|
||||||
- "traefik.http.services.merchbay-admin-dev.loadbalancer.server.port=80"
|
- "traefik.http.services.merchbay-admin-dev.loadbalancer.server.port=80"
|
||||||
# HTTP to HTTPS redirect
|
# HTTP to HTTPS redirect
|
||||||
- "traefik.http.routers.merchbay-admin-dev-http.rule=Host(`dev.merchbay.app`)"
|
- "traefik.http.routers.merchbay-admin-dev-http.rule=Host(`dev-admin.merchbay.app`)"
|
||||||
- "traefik.http.routers.merchbay-admin-dev-http.entrypoints=web"
|
- "traefik.http.routers.merchbay-admin-dev-http.entrypoints=web"
|
||||||
- "traefik.http.routers.merchbay-admin-dev-http.middlewares=https-redirect"
|
- "traefik.http.routers.merchbay-admin-dev-http.middlewares=https-redirect"
|
||||||
- "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
|
- "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
|
||||||
|
|||||||
@@ -59,8 +59,8 @@ case $env_choice in
|
|||||||
2)
|
2)
|
||||||
ENV_TYPE="development"
|
ENV_TYPE="development"
|
||||||
DEPLOY_DIR="/var/www/merchbay_admin_dev"
|
DEPLOY_DIR="/var/www/merchbay_admin_dev"
|
||||||
DEFAULT_DOMAIN="dev.merchbay.app"
|
DEFAULT_DOMAIN="dev-admin.merchbay.app"
|
||||||
DEFAULT_APP_URL="https://dev.merchbay.app"
|
DEFAULT_APP_URL="https://dev-admin.merchbay.app"
|
||||||
DEFAULT_APP_ENV="staging"
|
DEFAULT_APP_ENV="staging"
|
||||||
DEFAULT_DB_NAME="merchbay_dev"
|
DEFAULT_DB_NAME="merchbay_dev"
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user