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-easypanelyarn 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: examplePasswordNonRootpaste 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
imagecontainer_nameportsenvironmentvolumescommand
Docker Compose File
# ...
image: easypanel/easypanelGenerated 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:5000Generated Schema:
{
"ports": [
{
"published": 3000,
"target": 3000
},
{
"published": 8000,
"target": 5000
}
]
}docker-compose file:
# ...
environment:
SECRET: my-super-secret
ANOTHER_SECRET: ohooho-secretGenerated 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/volumeGenerated 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:
postgresmysqlmongoredis
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