Easypanel is a Beautiful, Easy to use Server Control Panel based on Docker easypanel.io.
with this little App you are able to create an Easypanel Schema based on your docker-compose file
goto compose-to-easypanel.netlify.app
- Clone The Repo
gh repo clone ravenbroetzmann/compose-to-easypanel
cd compose-to-easypanel
yarn install
,yarn dev
- the app should now be available on localhost:3000
Creating an Mysql application with Adminer as Dashboard
./docker-compose.yml
version: "3"
services:
adminer:
image: adminer
restart: always
ports:
- 8080:8080
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: examplePassword
MYSQL_PASSWORD: examplePasswordNonRoot
paste the file contents in the left hand side textarea on the website
after running this command you can view and edit the schema on the right hand side
Generated Schema:
{
"services": [
{
"type": "app",
"data": {
"projectName": "test",
"serviceName": "adminer",
"source": { "type": "image", "image": "adminer" },
"ports": [{ "published": 8080, "target": 8080 }]
}
},
{
"type": "mysql",
"data": {
"projectName": "test",
"serviceName": "db",
"rootPassword": "examplePassword",
"password": "examplePasswordNonRoot"
}
}
]
}
after you copied the schema you can go to your easypanel Dashboard. Go to your-project
, select templates
and scroll all the way down to developer an then click Create from Schema
Please note: Domains and Proxys are currently not supported, you need to add these manually via the Easypanel dashboard
image
container_name
ports
environment
volumes
command
Docker Compose File
# ...
image: easypanel/easypanel
Generated Schema
{
"source": {
"type": "image",
"image": "easypanel/easypanel"
}
}
The property container_name
represents the serviceName
, the default serviceName
is the key
of the service
object in the docker-compose file
#...
service050:
container_name: "my-super-container-name" # This is the serviceName
image: easypanel/easypanel
#...
#...
service050: # This is the serviceName
image: easypanel/easypanel
# ...
docker-compose file:
# ...
ports:
# outside:inside
- 3000:3000
- 8000:5000
Generated Schema:
{
"ports": [
{
"published": 3000,
"target": 3000
},
{
"published": 8000,
"target": 5000
}
]
}
docker-compose file:
# ...
environment:
SECRET: my-super-secret
ANOTHER_SECRET: ohooho-secret
Generated Schema:
{
"env": "SECRET=my-super-secret\nANOTHER_SCRET=ohooho-secret"
}
Its currently not supported to load your env variables through an .env file
# ...
environment:
SECRET: ${SECRET} # that won't work !
docker-compose file:
# ...
volumes:
# outside:inside
- ./my/bind:/etc/my/bind
- my-volume:/etc/my/volume
Generated Schema:
{
"volumes": [
{
"type": "bind",
"hostPath": "./my/bind",
"mountPath": "/etc/my/bind"
},
{
"type": "volume",
"name": "my-volume",
"mountPath": "/etc/my/volume"
}
]
}
docker-compose file:
# ...
command: yarn start
# or
command: ["yarn", "start"]
Generated Schema:
{
"deploy": {
"command": "yarn start"
}
}
Easypanel supports all popular databases out of the box:
postgres
mysql
mongo
redis
The Cli automatically creates an database service if the official image is used, however sometimes you need to provide an custom image, to do that you need to provide and env Variable in your docker-compose
named EASYPANEL_DATABASE
with the value of one database service (postgres
, mysql
, mongo
,redis
)
you also need to provide an Password env variable, otherwise a new one is created
- Mongo:
MONGO_INITDB_ROOT_PASSWORD: <password>
- Postgres:
POSTGRES_PASSWORD: <password>
- Redis:
REDIS_PASSWORD: <password>
- MySql:
MYSQL_ROOT_PASSWORD: <root-pw>; MYSQL_PASSWORD: <password>
docker-compose file
db:
image: "postgres"
environment:
POSTGRES_PASSWORD: "super-password"
Generated Schema
{
"type": "postgres",
"data": {
"password": "super-password"
}
}
With custom image
db:
image: "myuser/postgres"
environment:
EASYPANEL_DATABASE: postgres
PASSWORD: "super-password"
Generated Schema
{
"type": "postgres",
"data": {
"image": "myuser/postgres",
"password": "super-password"
}
}
Contribution is always welcome :-)
- Fork the Repo
- Create a Branch from
master
- Edit the Source Code
- Submit a PR