This is early stuff. You've been warned.
Wharf is a successor of ContainerOps platform whose concept is built upon the DevOps, which means it's a higher level solution over traditional approach and DevOps, but not an alternative. The ultimate goal of Wharf is building a pipeline form development to deployment & operations through Docker, Rocket and other container solutions.
ContainerOps is all about product workflow. Wharf builds and runs a container image you defined whenever new code is being pushed, along with corresponding dependence system. But it's not all, the image will also work with continuous integration, or continuous deployment with Rocket, LXC or Atomic, etc. Wharf is focusing on the continuous changes from version control system to production environment.
Now, it's time to announce our pre-release and core of ContainerOps version of Wharf, you can replace Docker Registry with it. Please make sure you know that Wharf is currently under alpha stage.
Our team is still working really hard for your happiness with the complete version of ContainerOps platform, which comes in next few months.
Clone code into directory $GOPATH/src/github.com/containerops
and then exec commands:
go get github.com/tools/godep
godep go build
or
go get -u github.com/astaxie/beego
go get -u github.com/codegangsta/cli
go get -u github.com/siddontang/ledisdb/ledis
go get -u github.com/garyburd/redigo/redis
go get -u github.com/shurcooL/go/github_flavored_markdown
go get -u github.com/satori/go.uuid
go get -u github.com/nfnt/resize
go get -u github.com/tools/godep
go build
- Docker Hub repository sync automatically.
- Rocket CAS support.
- More relative pages.
Please add a runtime config file named bucket.conf
under wharf/conf
before starting wharf
service.
runmode = dev
enablehttptls = true
httpsport = 443
httpcertfile = cert/containerops.me/containerops.me.crt
httpkeyfile = cert/containerops.me/containerops.me.key
gravatar = data/gravatar
[docker]
BasePath = /tmp/registry
StaticPath = files
Endpoints = containerops.me
Version = 0.9.0
Config = prod
Standalone = true
Encrypt = false
API = v2
[ledisdb]
DataDir = /tmp/ledisdb
DB = 8
[log]
FilePath = /tmp
FileName = containerops-log
[session]
Provider = ledis
SavePath = /tmp/session
[domain]
Domain = containerops.me
- Application run mode must be
dev
orprod
. - If you use Nginx as front end, make sure
enablehttptls
isfalse
. - If run with TLS and without Nginx, set
enablehttptls
istrue
and set the file and key file. - The
BasePath
is whereDocker
andRocket
image files are stored. Endpoints
is very important parameter, set the same value as your domain or IP. For example, you runwharf
with domainxxx.org
, thenEndpoints
should bexxx.org
.DataDir
is whereledis
data is located.- The
wharf
session provider default isledis
, theProvider
andSavePath
is session data storage path. - The bucket.conf should be in folder conf with app.conf. If you wanna change the bucket.conf name, you should be modify the include bucket.conf in the app.conf last line.
- Important
API = v1
means we fully supportDocker Registry API V1' and
API = v2means support
Docker Registry API V2' andDocker Registry API V1' at the same time. You could
pushimages with
v2then
pullwith
v1, but couldn't
pushwith
v1then
pullwith
v2`.
It's a Nginx config example. You can change client_max_body_size what limited upload file size.
You should copy containerops.me
keys from cert/containerops.me
to /etc/nginx
, then run Wharf with http
mode and listen on 127.0.0.1:9911
.
upstream wharf_upstream {
server 127.0.0.1:9911;
}
server {
listen 80;
server_name containerops.me;
rewrite ^/(.*)$ https://containerops.me/$1 permanent;
}
server {
listen 443;
server_name containerops.me;
access_log /var/log/nginx/containerops-me.log;
error_log /var/log/nginx/containerops-me-errror.log;
ssl on;
ssl_certificate /etc/nginx/containerops.me.crt;
ssl_certificate_key /etc/nginx/containerops.me.key;
client_max_body_size 1024m;
chunked_transfer_encoding on;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
location / {
proxy_pass http://wharf_upstream;
}
}
Run behind Nginx:
./wharf web --address 127.0.0.1 --port 9911
Run directly:
./wharf web --address 0.0.0.0 --port 80
- Add containerops.me in your
hosts
file like192.168.1.66 containerops.me
with IP which runwharf
. - Registry a user at
https://containerops.me/auth
. - Login with new user use
docker login containerops.me
. - Then
push
withdocker push containerops.me/somebody/ubuntu
. - You could
pull
withdocker pull -a containerops.me/somebody/ubuntu
. - Work fun!
Please submit issue at https://github.com/dockercn/wharf/issues
- Meaglith Ma https://twitter.com/genedna
- Allen Chen https://github.com/chliang2030598
- Leo Meng https://github.com/fivestarsky
- Unknwon https://twitter.com/joe2010xtmf
Wharf is licensed under the MIT License.