Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add MUSL libc version of docker-compose #6141

Open
wants to merge 3 commits into
base: master
from

Conversation

Projects
None yet
5 participants
@andyneff
Copy link
Contributor

andyneff commented Aug 15, 2018

Resolves #3465

rocker-compose is discontinued, and this should bring musl support into the mainstream docker-compose build path

Builds executable using alpine 3.4 so that python 3.5 is used to run pyinstaller. Resulting executable should work as far back as alpine 3.2, which should be a decent amount of backwards compatibility. When using alpine 3.1 or older on prior projects, I never got pyinstaller 3.3.1 working, so hopefully this isn't an issue.

The docker image essentially pip downloads the requirements-build.txt file so that the correct version of pyinstaller is used. Then the pyinstaller is bootstrapped for musl, and turned into a wheel. After the tox environment is created, the wheel is installed. By the time the requirements-build.txt is used in the normal build path, pyinstaller is already installed an happy.

@GordonTheTurtle

This comment has been minimized.

Copy link

GordonTheTurtle commented Aug 15, 2018

Please sign your commits following these rules:
https://github.com/moby/moby/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:

$ git clone -b "musl" git@github.com:andyneff/compose.git somewhere
$ cd somewhere
$ git rebase -i HEAD~842354137256
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.

andyneff added some commits Aug 15, 2018

Added initial musl dist support (working)
- Added an alpine 3.4 docker to compile docker-compose for musl
- Converted build scripts to use sh instead of bash
- Added musl to executable name for alpine builds
- Made VENV override-able in linux entrypoint

Signed-off-by: Andy Neff <andy@visionsystemsinc.com>
Add musl to deploy scripts
Signed-off-by: Andy Neff <andy@visionsystemsinc.com>

@andyneff andyneff force-pushed the andyneff:musl branch from 4768126 to 0c162d6 Aug 15, 2018

@GordonTheTurtle GordonTheTurtle added dco/no and removed dco/no labels Aug 15, 2018

Fix EOF for Jenkins
Signed-off-by: Andy Neff <andy@visionsystemsinc.com>

@andyneff andyneff force-pushed the andyneff:musl branch from ab6dcf3 to 0021a44 Aug 16, 2018

@GordonTheTurtle GordonTheTurtle removed the dco/no label Aug 16, 2018

@shin-

This comment has been minimized.

Copy link
Contributor

shin- commented Aug 20, 2018

Thanks for the contribution @andyneff !

I'm not sure I quite understand what spurred this PR - #3465 was resolved a while ago. Is anything wrong with the existing Dockerfile.run?

The way I see it, if we merge this, we'll be committing to supporting an additional release binary, which can be a serious long-term engagement. And while that can make sense if a given platform or community is not being appropriately served by the existing solution, this doesn't seem to be the case here, but please let me know if I'm misunderstanding!

cc @garethr @thaJeztah for their thoughts as well

@thaJeztah

This comment has been minimized.

Copy link
Member

thaJeztah commented Aug 20, 2018

could use input from @justincormack @kolyshkin and @ncopa

@andyneff

This comment has been minimized.

Copy link
Contributor Author

andyneff commented Aug 20, 2018

@shin- There were some internal reasons that spun up the desire to have docker-compose on musl (alpine) without using glibc, and we just wanted the same convenience that the executable offered glibc. Also, I had to solve this on another project of mine, so this was mostly copy and paste and paste for me.

As I saw it, 3465 said you can either:

  1. Use it in the pure python form
  2. Add glibc and use glibc
  3. Bootstrap pyinstaller for musl

We decided the most appropriate thing was option 3.

It's was my hope you decide this is low impact enough and worth adding to the binary pool, especially with the hard part completed.

@ncopa

This comment has been minimized.

Copy link

ncopa commented Aug 31, 2018

It may also be of interested that I recently added docker-compose as an alpine package so you can apk add docker-compose

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.