Saturday, May 17, 2025

Install and setup docker for local projects

 Install Docker from Official Docker Repo

✅ STEP-BY-STEP TO INSTALL DOCKER & DOCKER COMPOSE (V2)

# 1. Remove any old Docker versions
sudo apt remove docker docker.io containerd runc



# 2. Set up Docker's official GPG key


sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg



# 3. Add the Docker APT repository (for Ubuntu 22.04 "jammy")
 

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



# 4. Update APT
 

sudo apt update

# 5. Install Docker Engine and CLI (this includes docker-compose v2)
 

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-c

ompose-plugin -y
 

--------------------

6. Verify Docker is installed

docker --version

7. Verify Docker Compose V2 is working
docker compose version
 

8. Start Docker service (if not running)

sudo systemctl start docker
sudo systemctl enable docker
 

9. Test Docker Compose by running a sample container

mkdir ~/docker-test && cd ~/docker-test
echo -e "services:\n  hello:\n    image: hello-world" > docker-compose.yml
docker compose up
 

🚀 Next Steps: Run Laravel Project in Docker

✅ 1. Directory Structure (example)

/var/www/html/example.com/
├── docker-compose.yml
├── Dockerfile
├── .env
├── app/
├── public/
├── vendor/
├── ...
 

✅ 2. Basic docker-compose.yml Example

version: '3.8'

services:
  app:
    build:
      context: .
    container_name: laravel_app
    ports:
      - "8000:8000"
    volumes:
      - .:/var/www/html
    working_dir: /var/www/html
    command: php artisan serve --host=0.0.0.0 --port=8000
    depends_on:
      - db

  db:
    image: mysql:5.7
    container_name: mysql_db
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - dbdata:/var/lib/mysql

volumes:
  dbdata:


✅ 3. Basic Dockerfile

 

FROM php:8.1-cli

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git unzip curl libzip-dev zip && \
    docker-php-ext-install zip pdo pdo_mysql

# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Set working directory
WORKDIR /var/www/html
 

✅ 4. Run the Laravel App 

----------------------------------------

docker compose up --build
--------------------------------------------