This guide deploys PrestaShop 9.0 with Docker Compose on Debian 10+, Ubuntu 20.04+, or RHEL 9+ using the official PrestaShop Docker image.
Current Version: 9.0.x (released 2025-2026)
- name: Deploy PrestaShop with Docker Compose
hosts: prestashop
become: true
vars:
app_root: /opt/prestashop
app_port: 8080
db_name: prestashop
db_user: prestashop
db_password: "prestashop-db-password-change-me"
db_root_password: "mariadb-root-password-change-me"
tasks:
- name: Install Docker on Debian/Ubuntu
apt:
name:
- docker.io
- docker-compose-plugin
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Install Docker on RHEL family
dnf:
name:
- docker
- docker-compose-plugin
state: present
when: ansible_os_family == "RedHat"
- name: Enable and start Docker
service:
name: docker
state: started
enabled: true
- name: Create app directory
file:
path: "{{ app_root }}"
state: directory
mode: "0755"
- name: Write Docker Compose file for PrestaShop
copy:
dest: "{{ app_root }}/docker-compose.yml"
mode: "0644"
content: |
version: '3.8'
services:
mariadb:
image: mariadb:10.6
container_name: prestashop-mariadb
restart: unless-stopped
environment:
MYSQL_DATABASE: {{ db_name }}
MYSQL_USER: {{ db_user }}
MYSQL_PASSWORD: {{ db_password }}
MYSQL_ROOT_PASSWORD: {{ db_root_password }}
volumes:
- mariadb_data:/var/lib/mysql
networks:
- prestashop-net
prestashop:
image: prestashop/prestashop:latest
container_name: prestashop
restart: unless-stopped
depends_on:
- mariadb
ports:
- "{{ app_port }}:80"
environment:
DB_SERVER: mariadb
DB_NAME: {{ db_name }}
DB_USER: {{ db_user }}
DB_PASSWD: {{ db_password }}
DB_PREFIX: ps_
PS_LANGUAGE: en
PS_COUNTRY: us
PS_USE_SSL: 'false'
volumes:
- prestashop_data:/var/www/html
networks:
- prestashop-net
volumes:
mariadb_data:
prestashop_data:
networks:
prestashop-net:
- name: Start application stack
command: docker compose up -d
args:
chdir: "{{ app_root }}"
- name: Wait for PrestaShop to be ready
wait_for:
port: "{{ app_port }}"
timeout: 180
delay: 10
- name: Display installation information
debug:
msg: |
PrestaShop installation is ready!
Access: http://{{ inventory_hostname }}:{{ app_port }}
Admin: http://{{ inventory_hostname }}:{{ app_port }}/admin
IMPORTANT:
1. Complete the setup wizard on first access
2. Change the admin password immediately after setup
3. Configure SSL/TLS via reverse proxy for production
http://YOUR-SERVER:8080| Variable | Description | Default |
|---|---|---|
app_root |
Installation directory | /opt/prestashop |
app_port |
External port for web access | 8080 |
db_name |
MySQL database name | prestashop |
db_user |
MySQL database user | prestashop |
db_password |
MySQL database password | (change me) |
db_root_password |
MySQL root password | (change me) |