Now you can quickly spin up the AdventureWorks sample database in docker!
This database is great for testing database features and experimenting in database administration as it comes preloaded with a reasonable (example) enterprise database architecture and records! Samples include fictitious employees, departments, addresses, payroll, contacts, sales, products, and so much more!
These databases are built off the available backups provided by Microsoft, and a custom port to postgres. The docker images utilize the native images provided for AdventureWorks on Postgres and Microsoft SQL Server.
This project is available on...
- Docker Hub:
chriseaton/adventureworks
- GitHub:
chriseaton/docker-adventureworks
To run one of the samples, see §Running below.
You can find samples of a docker
or docker-compose.yaml
files in the samples/
directory.
To get started, you just need to fire off one of the docker
commands below (modify as desired) which will pull and run the database image.
Check out the samples/
directory for more (such as a docker compose
file).
Tip
Replace My_password1
with your own secure password. Note that the password must pass minimum complexity requirements
or you won't be able to connect!
This docker image is extended from the official Microsoft SQL Server docker image image and so you can use the same environmental variables defined on there.
docker run -p 1433:1433 \
-e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=My_password1' \
-d chriseaton/adventureworks:latest
This docker image is extended from the official Postgres docker image image and so you can use the same environmental variables defined on there.
docker run -p 5432:5432 \
-e 'POSTGRES_PASSWORD=My_password1' \
-d chriseaton/adventureworks:postgres
Currently this docker image is available in two supported database engines: Microsoft SQL Server & Postgres
To ensure parity and cross-compatibility, we use a slightly older version of each.
- Microsoft SQL 2022 & 2017
- Postgres 16 & 13
Note
ARM/i386 support is currently only available on the Postgres 16 images and later.
If you'd like to leverage a specific version, you can clone this repository and modify the build.sh
scripts in the
appropriate folder.
There are three versions tagged for Microsoft SQL Server:
Tag | Description |
---|---|
latest or oltp or oltp-2022 |
This image contains the standard OLTP version of the AdventureWorks database on Microsoft SQL 2022. |
oltp-2017 |
This image contains the standard OLTP version of the AdventureWorks database on Microsoft SQL 2017. |
datawarehouse or datawarehouse-2022 |
This image utilizes the data warehouse version of the AdventureWorks database on Microsoft SQL 2022. |
datawarehouse-2017 |
This image utilizes the data warehouse version of the AdventureWorks database on Microsoft SQL 2017. |
light or light-2022 |
This image utilizes the "light" version of the AdventureWorks database on Microsoft SQL 2022. |
light-2017 |
This image utilizes the "light" version of the AdventureWorks database on Microsoft SQL 2017. |
Note
The original AdventureWorks database by Microsoft was released under MIT license: https://github.com/microsoft/sql-server-samples/blob/master/license.txt
At this time, only the tables and data are fully implemented but should be accurately converted to postgres data types (including geography).
Some views (specifically, the ones using XML and CROSS APPLY
) have been omitted.
No functions, custom types, or stored procedures are included.
Tag | Description |
---|---|
postgres or postgres-16 |
This image adapts the "light" version of the AdventureWorks database to Postgres 16. |
postgres-13 |
This image adapts the "light" version of the AdventureWorks database to Postgres 13. |
Run the build.sh
script to download the AdventureWorks backup file from Microsoft, and to build and tag the docker image.
For multi-architecture build support see the docker documentation here.
In a nutshell on your linux machine, run:
docker run --privileged --rm tonistiigi/binfmt --install all
...and in your /etc/docker/daemon.json
configuration file, add:
{
"features": {
"containerd-snapshotter": true
}
}
...once these things are done you should be able to run a multi-platform build, like in this example.
If you are a maintainer, you can publish the image to docker hub chriseaton/adventureworks.
docker push chriseaton/adventureworks