Compare commits
3 Commits
878d72b785
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 45a0c45462 | |||
| 3e5b8aa042 | |||
| f04e93ddb4 |
43
RESTART_INSTRUCTIONS.md
Normal file
43
RESTART_INSTRUCTIONS.md
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# How to Restart OpnForm Containers
|
||||||
|
|
||||||
|
Since you're using a web-based Docker management interface, follow these steps:
|
||||||
|
|
||||||
|
## 1. Stop All Containers
|
||||||
|
In your Docker management interface:
|
||||||
|
- Select all OpnForm containers
|
||||||
|
- Click "Stop" or use the stop button
|
||||||
|
- Wait for all containers to stop
|
||||||
|
|
||||||
|
## 2. Start Containers in Correct Order
|
||||||
|
Start the containers in this order:
|
||||||
|
1. **opnform-db** - Wait until healthy
|
||||||
|
2. **opnform-redis** - Wait until healthy
|
||||||
|
3. **opnform-api** - Wait until it shows as running
|
||||||
|
4. **opnform-api-nginx** - This should now start successfully
|
||||||
|
5. **opnform-api-worker** - Start this
|
||||||
|
6. **opnform-api-scheduler** - Start this
|
||||||
|
7. **opnform-client** - Start this last
|
||||||
|
|
||||||
|
## 3. Verify Services
|
||||||
|
After all containers are running:
|
||||||
|
- Check that `opnform-api-nginx` is healthy (not "starting")
|
||||||
|
- Access the UI at: http://YOUR-SERVER-IP:7655
|
||||||
|
- API should be available at: http://YOUR-SERVER-IP:7654
|
||||||
|
|
||||||
|
## What Changed
|
||||||
|
1. **Fixed PHP-FPM health check** - Changed from running artisan command to checking if php-fpm process exists
|
||||||
|
2. **Added restart policies** - Containers will restart unless manually stopped
|
||||||
|
3. **Changed port bindings** - From 127.0.0.1 (localhost only) to 0.0.0.0 (accessible from any IP)
|
||||||
|
4. **Extended start period** - Gave API container more time to start before health checks
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
If api-nginx is still unhealthy:
|
||||||
|
1. Check logs of opnform-api container
|
||||||
|
2. Verify PHP-FPM is running: Look for php-fpm processes in the api container
|
||||||
|
3. Check api-nginx logs for connection errors
|
||||||
|
|
||||||
|
## Security Note
|
||||||
|
The services are now exposed on all network interfaces. For production:
|
||||||
|
- Use a firewall to restrict access
|
||||||
|
- Configure your host nginx with SSL
|
||||||
|
- Or revert to localhost binding after testing
|
||||||
69
UPDATED_RESTART_INSTRUCTIONS.md
Normal file
69
UPDATED_RESTART_INSTRUCTIONS.md
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# Updated Restart Instructions for OpnForm
|
||||||
|
|
||||||
|
## Changes Made
|
||||||
|
1. **Removed health check from api-nginx** - This was causing the "starting" status
|
||||||
|
2. **Fixed PHP-FPM health check** - Changed to check process existence
|
||||||
|
3. **Made services accessible externally** - Changed ports from localhost-only to all interfaces
|
||||||
|
|
||||||
|
## Step-by-Step Restart Process
|
||||||
|
|
||||||
|
### 1. Stop ALL OpnForm Containers
|
||||||
|
In your Docker web interface:
|
||||||
|
- Select ALL OpnForm containers
|
||||||
|
- Click "Stop"
|
||||||
|
- Wait for all to fully stop
|
||||||
|
|
||||||
|
### 2. Remove the api-nginx Container (Important!)
|
||||||
|
- Select the `opnform-api-nginx` container
|
||||||
|
- Click "Remove" or "Delete"
|
||||||
|
- This ensures it recreates with the new configuration
|
||||||
|
|
||||||
|
### 3. Start Containers in Order
|
||||||
|
Start each container and wait for it to be ready before starting the next:
|
||||||
|
|
||||||
|
1. **opnform-db** - Wait until "healthy"
|
||||||
|
2. **opnform-redis** - Wait until "healthy"
|
||||||
|
3. **opnform-api** - Wait until "healthy" (may take 90 seconds)
|
||||||
|
4. **opnform-api-nginx** - Should show "running" (no health check now)
|
||||||
|
5. **opnform-api-worker** - Wait until running
|
||||||
|
6. **opnform-api-scheduler** - Wait until running
|
||||||
|
7. **opnform-client** - Wait until "healthy"
|
||||||
|
|
||||||
|
### 4. Verify Everything Works
|
||||||
|
|
||||||
|
#### Check nginx is actually running:
|
||||||
|
Look at the logs for `opnform-api-nginx`. You should see:
|
||||||
|
```
|
||||||
|
Configuration complete; ready for start up
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Test the services:
|
||||||
|
- UI: http://YOUR-SERVER-IP:7655
|
||||||
|
- API: http://YOUR-SERVER-IP:7654/api/health
|
||||||
|
|
||||||
|
### 5. If api-nginx Still Shows Issues
|
||||||
|
|
||||||
|
Check if PHP-FPM is running in the API container:
|
||||||
|
1. Go to the `opnform-api` container
|
||||||
|
2. Check the logs - should show: `fpm is running, pid 1`
|
||||||
|
3. If PHP-FPM isn't running, the API container needs to be restarted
|
||||||
|
|
||||||
|
### 6. Common Issues
|
||||||
|
|
||||||
|
**Port already in use:**
|
||||||
|
- Make sure no other services are using ports 7654 or 7655
|
||||||
|
- Check with: `netstat -tlnp | grep -E '7654|7655'` on the host
|
||||||
|
|
||||||
|
**Cannot connect to API:**
|
||||||
|
- Ensure firewall allows ports 7654 and 7655
|
||||||
|
- Try accessing locally first: `curl http://localhost:7654/api/health`
|
||||||
|
|
||||||
|
**nginx won't start:**
|
||||||
|
- Check logs for configuration errors
|
||||||
|
- Verify the api-nginx.conf file exists
|
||||||
|
|
||||||
|
## Security Reminder
|
||||||
|
Services are now exposed on all network interfaces (0.0.0.0). For production:
|
||||||
|
- Configure firewall rules to restrict access
|
||||||
|
- Set up your host nginx with SSL as planned
|
||||||
|
- Or change back to 127.0.0.1 after testing
|
||||||
@@ -26,11 +26,12 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "php /usr/share/nginx/html/artisan about || exit 1"]
|
test: ["CMD-SHELL", "pgrep php-fpm > /dev/null || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 15s
|
timeout: 15s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 60s
|
start_period: 90s
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
api-nginx:
|
api-nginx:
|
||||||
image: nginx:alpine
|
image: nginx:alpine
|
||||||
@@ -39,14 +40,11 @@ services:
|
|||||||
- ./docker/api-nginx.conf:/etc/nginx/nginx.conf:ro
|
- ./docker/api-nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
- opnform_storage:/usr/share/nginx/html/storage:ro
|
- opnform_storage:/usr/share/nginx/html/storage:ro
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:7654:80" # API on port 7654
|
- "0.0.0.0:7654:80" # API on port 7654 - accessible from any IP
|
||||||
depends_on:
|
depends_on:
|
||||||
- api
|
api:
|
||||||
healthcheck:
|
condition: service_started
|
||||||
test: ["CMD-SHELL", "wget --spider -q http://localhost/ || exit 1"]
|
restart: unless-stopped
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
|
|
||||||
api-worker:
|
api-worker:
|
||||||
image: jhumanj/opnform-api:latest
|
image: jhumanj/opnform-api:latest
|
||||||
@@ -120,7 +118,7 @@ services:
|
|||||||
image: jhumanj/opnform-client:latest
|
image: jhumanj/opnform-client:latest
|
||||||
container_name: opnform-client
|
container_name: opnform-client
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:7655:3000" # UI on port 7655
|
- "0.0.0.0:7655:3000" # UI on port 7655 - accessible from any IP
|
||||||
env_file:
|
env_file:
|
||||||
- ./client/.env
|
- ./client/.env
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -129,6 +127,7 @@ services:
|
|||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 45s
|
start_period: 45s
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:7
|
image: redis:7
|
||||||
|
|||||||
Reference in New Issue
Block a user