Thanks Alex, I'll take a look On Mon, Dec 14, 2020 at 12:48 PM Alex Kosolapov <alex.kosola...@akvelon.com> wrote:
> Hi! > > > > Wanted to send a note that PR with changes submitted > https://github.com/apache/beam/pull/13545 and ready for code review > > > > Thanks, > > Alex > > *From: *Alex Kosolapov <alex.kosola...@akvelon.com> > *Date: *Thursday, December 10, 2020 at 3:44 PM > *To: *"dev@beam.apache.org" <dev@beam.apache.org> > *Subject: *Re: Docker Development Environment > > > > Hi Brian, > > > > Yes - will update the script, created JIRA to track > https://issues.apache.org/jira/browse/BEAM-11438 > > > > I was thinking about dscl initially too - and dscl will require user to > create docker group in this case as you noted. For some users that might be > an extra manual step to do (group not created automatically by Docker > install). > > > > Can approaches be combined? > > 1. If docker group created – use docker group’s gid > 2. If docker group not created – assign some default, e.g. 1000 or > some other safe way of handling “no docker group” case > > > > Thanks, > > Alex > > > > *From: *Brian Hulette <bhule...@google.com> > *Reply-To: *"dev@beam.apache.org" <dev@beam.apache.org> > *Date: *Wednesday, December 9, 2020 at 12:21 PM > *To: *dev <dev@beam.apache.org> > *Subject: *Re: Docker Development Environment > > > > Hey Alex, > Thanks for trying this out on macOS! Some responses inline > > > > On Tue, Dec 8, 2020 at 11:42 AM Alex Kosolapov <alex.kosola...@akvelon.com> > wrote: > > Hi! > > > > Thank you for creating Docker build environment - makes build environment > setup so much easier! > > > > I ran start-build-env.sh on a macOS, and I ran into some items that wanted > to share + propose how to improve Docker build environment for macOS > support: > > 1. ./start-build-env.sh: line 75: getent: command not found and script > build error downstream. > > > > Step 26/26 : RUN echo '. /scripts/beam_env_checks.sh' >> > /root/.bash_aliases > > ---> Using cache > > ---> fe48b8b26e91 > > Successfully built fe48b8b26e91 > > Successfully tagged beam-build:latest > > *./start-build-env.sh: line 75: getent: command not found* > > Sending build context to Docker daemon 2.56kB > > Step 1/10 : FROM beam-build > > ---> fe48b8b26e91 > > Step 2/10 : RUN rm -f /var/log/faillog /var/log/lastlog > > ---> Using cache > > ---> 11ea31f2099e > > Step 3/10 : RUN groupadd --non-unique -g 100 alex > > ---> Using cache > > ---> cf3f56f51d9f > > *Step 4/10 : RUN groupmod -g docker* > > * ---> Running in 5d5bc473be3b* > > *groupmod: invalid group ID 'docker'* > > *The command '/bin/bash -o pipefail -c groupmod -g docker' returned a > non-zero code: 3* > > > > I investigated the issues and found that start-build-env.sh expected group > "docker" created in the system groups. Creating a docker group is an > optional post install step ( > https://docs.docker.com/engine/install/linux-postinstall/), another relevant > reference to forum <https://forums.docker.com/t/no-more-docker-group/9123> > gives a hint of using staff group on macOS. Solution that worked for me was > pick another GID for DOCKER_GROUP_ID on Mac, e.g. > > #DOCKER_GROUP_ID=$(getent group docker | cut -d':' -f3) > > > > if [ "$(uname -s)" = "Linux" ]; then > > DOCKER_GROUP_ID=$(getent group docker | cut -d':' -f3) > > fi > > if [ "$(uname -s)" = "Darwin" ]; then > > DOCKER_GROUP_ID=1000 > > fi > > > > I think everyone using this container should do that postinstall step so > that docker doesn't have to be run as root. We actually point to it in an > error message if we detect the script is run as root. I think the real > issue here is that getent doesn't exist on MacOS, it looks like there is an > alternative approach though: > https://stackoverflow.com/questions/10910096/what-is-the-command-to-get-groupid-of-a-group-name-in-mac-or-linux > > Would you be ok updating the script to use that approach on macOS? This > would still require users to make a docker group. > > > > > > 1. Step 10/10 : RUN chown -R alex: /Users/alex/.cache > > ---> Running in f09e2bb0e045 > > chown: cannot access '/Users/alex/.cache': No such file or directory > > The command '/bin/bash -o pipefail -c chown -R alex: /Users/alex/.cache' > returned a non-zero code: 1 > > > > Fix for this was to change from HOME to DOCKER_HOME_DIR: > > RUN chown -R ${USER_NAME}:${GROUP_ID} > ${DOCKER_HOME_DIR}/.cache > > ENV GOPATH > ${DOCKER_HOME_DIR}/beam/sdks/go/examples/.gogradle/project_gopath > > Ah yes this definitely looks like a bug. It just happened to work when > running from a machine where the HOME dir was the same as in the container. > This one definitely makes sense. > > > > If these proposed solutions make sense I will create JIRA ticket and > submit these improvements for Docker build support on macOS. > > > > Thank you, > > Alex Kosolapov > > > > *From: *Brian Hulette <bhule...@google.com> > *Reply-To: *"dev@beam.apache.org" <dev@beam.apache.org> > *Date: *Friday, December 4, 2020 at 1:15 PM > *To: *dev <dev@beam.apache.org> > *Cc: *Omar Ismail <omarism...@google.com> > *Subject: *Re: Docker Development Environment > > > > I think https://github.com/apache/beam/pull/13308 is about ready to > merge. One question was whether or not to install pyenv in the container - > I think we should try to do without it. Users of this environment will > already be operating within a container, so they shouldn't need pyenv to > create isolated python environments, they could just use the container's > system python. > > > > The two issues Alex mentioned are still outstanding, but they seem to be > issues with ./gradlew check unrelated to the container. I filed BEAM-11402 > [1] to track this separately. > > > > [1] https://issues.apache.org/jira/browse/BEAM-11402 > > > > On Mon, Nov 30, 2020 at 11:43 AM Alex Amato <ajam...@google.com> wrote: > > If any of these are suitable for at least some development. I propose we > merge them, and update them with fixes later. Rather than trying to get > things 100% working in the first PR. > > > > Looks like this one was opened in early Sept, and never got merged. Which > is a pretty long time. Perhaps abandoned for the later? > > https://github.com/apache/beam/pull/12837 > > > > This one looks like its just failing on just a few tests (Which may be > addressed soon, but the PR was opened 19 days ago). > > https://github.com/apache/beam/pull/13308 > > (Can we set a deadline for this? And just say merge it by the end of the > week, regardless if the last two tests can be fixed or not?) > > > > (Would like to nudge this along, as it's been a pain point for many for a > while now). > > > > Thanks for the work here Niels, Omar and Sam. > > Looking forward to giving this a try :) > > > > > > On Mon, Nov 30, 2020 at 11:32 AM Brian Hulette <bhule...@google.com> > wrote: > > I agree this is a good idea. I remember my first experience with Beam > development - I ran through the steps at [1] and had `./gradlew check` > fail. I don't think I ever got it working before moving on and just running > more specific tasks. > > It would be great if we had a reliable way for new contributors to > establish an environment that can successfully run `./gradlew check`. > > > > Niels Basjes' PR (https://github.com/apache/beam/pull/13308) seems to be > close to that, so I think we should focus on getting that working and > iterate from there. Omar concurred with that in > https://github.com/apache/beam/pull/12837. > > > [1] https://beam.apache.org/contribute/#development-setup > > > > > > On Wed, Nov 25, 2020 at 3:39 PM Ahmet Altay <al...@google.com> wrote: > > Thank you for doing this. > > > > I have seen a few related PRs. Connecting them here in case these efforts > could be combined: > > - https://github.com/apache/beam/pull/12837 (/cc +Omar Ismail > <omarism...@google.com> ) > > - https://github.com/apache/beam/pull/13308 > > > > Ahmet > > > > On Wed, Nov 25, 2020 at 2:53 PM Sam Rohde <sro...@google.com> wrote: > > Hi All, > > > > I got tired of my local dev environment being ruined by updates so I made > a container for Apache Beam development work. What this does is create a > Docker container from the Ubuntu Groovy image and load it up with all the > necessary libraries/utilities for Apache Beam development. Then I run an > interactive shell in the Docker container where I do my work. > > > > This is a nice way for new contributors to easily get started. However > with the container in its current form, I don't know if this will help > other people because it is tied closely with my workflow (using VIM, > YouCompleteMe, for Python). But I think it can be a nice starting point for > improvements. For example: > > - Sharing the host display with Docker to start GUI applications (like > IntelliJ) in the container > - Adding Golang development support > > Here's a draft PR <https://github.com/apache/beam/pull/13430>, let me > know what you think, how it can be improved, and whether it's a good idea > for us to have a dev container like this. > > > > Regards, > > Sam > > > >