A collection of Perforce docker images:
- Perforce Base, an image containing the official repo and the p4 client
- Perforce P4D Server
- Perforce Git Fusion
- Perforce Swarm
All operations on the images and repositories are encapsulated in Makefiles.
Build images (the Makefile's default target):
$ make [image]
Tag your images with your repo username and push the images to the Docker registry:
$ docker login
$ DOCKER_REPO=ambakshi make image push
The perforce server images are contained in their respective directories. Each server comes with an example 'run' target that you can use to get a server up and running quickly.
$ make -C perforce-server run
$ make -C
Using docker-compose it is much simpler to setup a working environment. Modify the
docker-compose.yml
and the supplied envfile
to customize your site. Once done,
run:
$ make
$ docker volume create --name=perforce
$ docker volume create --name=gfp4depot
$ docker-compose up -d perforce # for p4d server
$ docker-compose up -d gfperforce # for p4d + git-fusion server
The perforce-git-fusion image is setup to run its own p4d server. If you prefer to run a seperate git+ssh server and connect to a running p4d instance, please open a PR.
You won't be able to run both perforce
and gfperforce
at the same time, because both
containers bind to host port 1666. If you need to run both please modify the docker-compose.yml
.
If you want to use a directory on your host to mount into your perforce container,
you'll need to modify the docker-compose.yml
file accordingly:
services:
perforce:
volumes:
/path/on/host:/data
gfperforce:
volumes:
/path/on/host:/data
Download a local p4 client for your OS from Perforce's repo, and run:
$ export P4CONFIG=.p4config
$ p4 info
User name: p4admin
Client name: titan7
Client host: titan7.local
Client unknown.
Current directory: /home/abakshi/projects/docker-perforce
Peer address: 172.18.0.1:38526
Client address: 172.18.0.1
Server address: perforce:1666
Server root: /data/p4depot
Server date: 2017/03/07 20:33:37 +0000 UTC
Server uptime: 00:04:26
Server version: P4D/LINUX26X86_64/2016.2/1487173 (2017/02/14)
ServerID: p4depot
Server services: standard
Server license: none
Case Handling: sensitive
Create a new client:
$ p4 client myclient
Perforce password (P4PASSWD) invalid or unset.
Attempting login for user 'p4admin' against server '1666'
Enter password:
User p4admin logged in.
Client myclient saved.
$ p4 -c myclient add README.md
//depot/README.md#1 - opened for add
$ p4 -c myclient submit
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
2019/05/01:
- Upgrade to P4 2018.2
- Upgrade gosu to 1.11
- Upgrade s6 to 1.22.1.0
- Remove various calls to bash -x
that caused P4PASSWD to be printed
- Pulled in fix pull request #10 from nathanperkins/fix-log-location
- Use tail -F
instead of -f, so we follow log rotation
- Pass http_proxy as an optional docker build arg
- Makefile loads an optional local.mk
where you can configure (amongst other things) http_proxy
2017/02/07: - Upgrade to P4 to 2016.2 - Switched default base image to centos7
2016/05/15: - Added docker-compose support
2016/05/14: - Fixed perforce-git-fusion
2014/12/24: - Initial version
- Amit Bakshi (ambakshi@gmail.com)