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

POCS in the Dock(er) #778

Closed
wants to merge 125 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
07f0e43
Updating docker install for lean images
wtgee Jan 31, 2019
ed52e71
Removing dependency
wtgee Jan 31, 2019
1066a00
Always add a symlink to `panoptes.log` for the `all` handler.
wtgee Feb 1, 2019
14123d6
Cleaing up Dockerfile
wtgee Feb 1, 2019
a8360c3
Adding docker-compose files.
wtgee Feb 1, 2019
5cc4a6d
Allow for different host names in both publishers and sockets.
wtgee Feb 4, 2019
aafc143
POCS Docker
wtgee Feb 4, 2019
69f5796
Fixing a few items related to running the docker images
wtgee Feb 5, 2019
6cdae3b
Passing the `host` from the config to the messaging hub
wtgee Feb 6, 2019
85a43a0
Passing host along properly for messaging
wtgee Feb 6, 2019
aa03c08
PAWS needs access to the images
wtgee Feb 6, 2019
6fa0b32
Merge remote-tracking branch 'upstream/develop' into new-docker
wtgee Feb 6, 2019
88c5f79
Merge branch 'develop' of github.com:panoptes/POCS into new-docker
wtgee Feb 9, 2019
960a395
Run the environment sensors
wtgee Feb 9, 2019
5252310
Smaller delay on environmental sensors. Start POCS (but don't run) fo…
wtgee Feb 9, 2019
ab1a0e8
Fixing messaging ports for docker usage
wtgee Feb 9, 2019
9c00c56
* Loading pocs config file so we have access to messaging info
wtgee Feb 9, 2019
1ad2ae0
Simplify the bind volumes
wtgee Feb 9, 2019
7645c30
Run separate container for messaging hub and expose the msg and cmd p…
wtgee Feb 9, 2019
e3a74b1
Removing old docker files, cleaing up startup scripts
wtgee Feb 9, 2019
3d6fbd0
Reverting the startup files as otherwise logger is broken for some re…
wtgee Feb 9, 2019
e3dd83c
Cleaning bin files
wtgee Feb 9, 2019
8d13d3b
First cut at a basic install script for docker items
wtgee Feb 9, 2019
40300ca
Updates to install file for docker. Still need to work out a few kink…
wtgee Feb 10, 2019
8ea84d0
* Using Ubuntu 18.10 in Docker images
wtgee Feb 25, 2019
73b2661
Updates to uber-install script
wtgee Mar 10, 2019
6ba78a2
Merge branch 'develop' of github.com:panoptes/POCS into new-docker
wtgee Mar 28, 2019
b601974
I have no idea why this suddenly needs a change.
wtgee Mar 29, 2019
adc6848
Inherit from the `gcr.io/panoptes-survey/panoptes-utils` image but build
wtgee Apr 2, 2019
bd0287a
Clean up some dependencies
wtgee Apr 2, 2019
580a409
Run the tests from the docker container.
wtgee Apr 2, 2019
cd198db
Merge branch 'new-docker' of github.com:wtgee/POCS into new-docker
wtgee Apr 2, 2019
d6920de
Travis pulls latest from github but still tests against container
wtgee Apr 2, 2019
ac53b76
Switching language back to `python` to avoid `SNIMissingWarning` warning
wtgee Apr 2, 2019
5626e21
Just pass the build directory as the shared volume.
wtgee Apr 2, 2019
343d95d
* Adding gphoto2
wtgee Apr 2, 2019
050d62a
Locking pycodestyle at specific version. See #515.
wtgee Apr 2, 2019
a917365
Update container building script.
wtgee Apr 3, 2019
a6a98f7
Merge remote-tracking branch 'upstream/develop' into new-docker
wtgee Apr 4, 2019
43df16c
Merge branch 'develop' of github.com:panoptes/POCS into new-docker
wtgee Apr 4, 2019
7beb4ca
Rename docker compose file
wtgee Apr 6, 2019
1fb25a9
Merge branch 'new-docker' of github.com:wtgee/POCS into new-docker
wtgee Apr 6, 2019
d8783a3
Cast Docker Spell Level 2
wtgee Apr 10, 2019
c06ca59
Trying to build for rpi and amd64
wtgee Apr 11, 2019
c5293a0
Renaming script for consistency
wtgee Apr 11, 2019
f6cf88e
Fixnig install of gphoto2 and using full path for pip
wtgee Apr 11, 2019
3396dd4
* POCS dir is flexible via `pocs_dir` arg to docker build
wtgee Apr 13, 2019
63695e3
Adding byobu to allow some Docker processes to run in background easily.
wtgee Apr 14, 2019
d62974b
Merge branch 'develop' of github.com:panoptes/POCS into new-docker
wtgee Apr 14, 2019
1b24209
Removing old `install` scripts
wtgee Apr 14, 2019
12fcf29
First attempt at a script to install POCS environment:
wtgee Apr 14, 2019
e597542
Merge branch 'new-docker' of github.com:wtgee/POCS into new-docker
wtgee Apr 14, 2019
2056057
Only submit coverage if running from travis
wtgee Apr 14, 2019
b7e0857
Excplicitly load panoptes-env
wtgee Apr 14, 2019
12a3c3b
Specific pycodestyle version
wtgee Apr 14, 2019
5819d03
Simplifying scripts.
wtgee Apr 15, 2019
6b937a7
Install docker-compose along with Docker
wtgee Apr 15, 2019
24e23ab
Merge remote-tracking branch 'upstream/develop' into new-docker
wtgee Apr 16, 2019
14d6dfa
Merge branch 'new-docker' of github.com:wtgee/POCS into new-docker
wtgee Apr 16, 2019
b64f6c0
Being a bit smarter about not creating the directories if already exi…
wtgee Apr 21, 2019
c2c9fc1
* Pull the google-sdk docker image.
wtgee Apr 21, 2019
c5f4383
Removing docker-compose
wtgee Apr 22, 2019
664ed31
* Make PANDIR configurable
wtgee Apr 22, 2019
6c621a5
* Fix bad ARG variable name.
wtgee Apr 22, 2019
51b7be3
* Add pocs-shell for docker-compose
wtgee Apr 22, 2019
53ab6de
Merge branch 'develop' of github.com:panoptes/POCS into new-docker
wtgee Apr 23, 2019
b0bb7f7
Merge branch 'new-docker' of github.com:wtgee/POCS into new-docker
wtgee Apr 23, 2019
164710b
ENTRYPOINT does not know about env vars
wtgee Apr 23, 2019
6607145
Fixing add
wtgee Apr 28, 2019
5cca8e5
Merge branch 'develop' of github.com:panoptes/POCS into new-docker
wtgee May 6, 2019
cf510d5
Make the startup script more generic; commands at end are simply passed
wtgee May 6, 2019
f3f7b59
docker-compose file will start a container for `peas-shell` and `pocs…
wtgee May 6, 2019
9622f32
Slight cleanup
wtgee May 7, 2019
4474545
Merge remote-tracking branch 'upstream/develop' into new-docker
wtgee May 7, 2019
a60016c
Change cr2 script to use new split dir
wtgee May 7, 2019
de90bc3
Merge remote-tracking branch 'upstream/develop' into new-docker
wtgee May 9, 2019
1f0aab3
Use correct pip
wtgee May 11, 2019
3343041
Use correct pip
wtgee May 11, 2019
acc7c2d
Rename file
wtgee May 11, 2019
8b4f4e1
Fixing travis run
wtgee May 11, 2019
4027688
Fixing conda paths (or lack thereof)
wtgee May 11, 2019
6b01c01
Move docker related files to consistent location with other repos
wtgee May 11, 2019
95d7fbf
Update buildfile to match
wtgee May 11, 2019
f8527c9
Removing old startup scripts
wtgee May 11, 2019
84c7542
Camera conversion uses new panoptes-utils
wtgee May 11, 2019
d73a021
Require utils
wtgee May 11, 2019
cfaaa80
Switching the base camera to utils
wtgee May 11, 2019
c1dd76b
Update name to match
wtgee May 11, 2019
461ac46
Use correct image type for pretty images
wtgee May 11, 2019
864e5d0
Small wrapper to process fits correctly
wtgee May 11, 2019
d493bf1
Adding custom poll exposure so we can properly set the _is_exposing. …
wtgee May 11, 2019
c163066
Setting a default google credentials env var. Need to test what happens
wtgee May 11, 2019
b5b93b0
Small change to skip errors on solve
wtgee May 12, 2019
130ac1f
Update path for docker compose
wtgee May 12, 2019
9fa9134
Install docker-compose
wtgee May 12, 2019
153a65b
Merge branch 'new-docker' of github.com:wtgee/POCS into new-docker
wtgee May 12, 2019
e0f258f
docker-compose from docker
wtgee May 12, 2019
4a152b3
Docker-compose is already there
wtgee May 12, 2019
c2b4ed3
docker-compose separate from docker
wtgee May 12, 2019
384f285
Adding entrypoing script to pocs-shell image. If the user has added
wtgee May 12, 2019
8538abe
Run entrypoint script properly
wtgee May 14, 2019
c97193f
Adding newline
wtgee May 14, 2019
66580cd
Fixing entrypoint
wtgee May 15, 2019
673d335
Make script relative and executable
wtgee May 15, 2019
7e50c5b
Remove entrypoint script, added to panoptes-utils
wtgee May 15, 2019
f8113a0
Use entrypoint from base image in all images.
wtgee May 15, 2019
48f3876
Remove entrypoint
wtgee May 20, 2019
def0938
Docker updates
wtgee May 21, 2019
d3f172d
* arduino-cli comments for install and cleanup
wtgee May 22, 2019
2213c23
Merge branch 'new-docker' of github.com:wtgee/POCS into new-docker
wtgee May 22, 2019
b6b08b4
Merge branch 'develop' of github.com:panoptes/POCS into new-docker
wtgee Jun 7, 2019
6a1ff4f
Improved docker install script
wtgee Jun 7, 2019
8983ae5
Fixing import statements
wtgee Jun 7, 2019
26c7341
Adding openssh-server to list of default apt tools
wtgee Jun 15, 2019
1eaf33a
Tabs to spaces
wtgee Jun 15, 2019
2593941
Add help option
wtgee Jun 15, 2019
cea82f2
Fix default github user
wtgee Jun 15, 2019
510d346
Trying to make multi-container compose file work in a sane way
wtgee Jun 18, 2019
fcc3410
docker-compose 3.7
wtgee Jun 18, 2019
aa82c92
Default for env vars
wtgee Jun 18, 2019
799c09e
Adding project directory and sanitzing script
wtgee Jun 18, 2019
d2ebe1f
Merge branch 'develop' of github.com:panoptes/POCS into new-docker
wtgee Jun 18, 2019
79cdef1
Update pocs-docker.sh
wtgee Jun 21, 2019
9b91611
Update peas
wtgee Jun 21, 2019
85118ed
Update pocs
wtgee Jun 21, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
docs/*
.git/*

# PANOPTES specific files
conf_files/*_local.yaml
examples/notebooks/*.fits
examples/notebooks/*.jpeg

# Development support
sftp-config.json

# emacs backups
*~
\#*\#

# TeX products
*.aux
*.log
*.pdf
*.toc

# Compiled files
*.py[co]
*.a
*.o
*.so
__pycache__
86 changes: 10 additions & 76 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,83 +1,17 @@
dist: xenial
sudo: required
language: python
services:
- mongodb
python:
- "3.6"
env:
- PANDIR=$HOME POCS=$TRAVIS_BUILD_DIR PANUSER=$USER ARDUINO_VERSION=1.8.1
services:
- docker
before_install:
- mkdir -p $PANDIR/logs
- mkdir -p $PANDIR/astrometry/data
- ln -s $POCS $PANDIR/POCS
- pip install -U pip
- pip install coveralls

# Install arudino files
- cd $PANDIR
- export DISPLAY=:1.0
- export
- wget http://downloads.arduino.cc/arduino-${ARDUINO_VERSION}-linux64.tar.xz
- tar xf arduino-${ARDUINO_VERSION}-linux64.tar.xz
- sudo mv arduino-${ARDUINO_VERSION} /usr/local/share/arduino
- sudo ln -s /usr/local/share/arduino/arduino /usr/local/bin/arduino

# Install miniconda
- wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
- bash miniconda.sh -b -p $HOME/miniconda
- export PATH="$HOME/miniconda/bin:$PANDIR/astrometry/bin:$PATH"
- hash -r

- conda config --set always_yes yes --set changeps1 no
- conda update -q conda
- conda info -a # Useful for debugging any issues with conda
- conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION
- source activate test-environment
- conda install numpy scipy

# Install astrometry.net
- wget https://github.com/dstndstn/astrometry.net/releases/download/0.78/astrometry.net-0.78.tar.gz
- tar zxvf astrometry.net-0.78.tar.gz && cd astrometry.net-0.78
- make && make py && make install INSTALL_DIR=$PANDIR/astrometry
- echo 'add_path $PANDIR/astrometry/data' | sudo tee --append $PANDIR/astrometry/etc/astrometry.cfg
addons:
apt:
packages:
- gphoto2
- libcairo2-dev
- libnetpbm10-dev
- netpbm
- libpng12-dev
- libjpeg-dev
- python-numpy
- python-pyfits
- python-dev
- zlib1g-dev
- libbz2-dev
- swig
- libcfitsio-bin
- libcfitsio-dev
install:
- cd $PANDIR
# install POCS and requirements
- cd $POCS
- pip install -r requirements.txt
- pip install -r docs/requirements.txt
- pip install -e .
- python pocs/utils/data.py --folder $PANDIR/astrometry/data
- ci_env=`bash <(curl -s https://codecov.io/env)`
- docker pull gcr.io/panoptes-survey/pocs
install: true
script:
- export BOARD="arduino:avr:micro"
- arduino --verify --board $BOARD resources/arduino_files/camera_board/camera_board.ino
- arduino --verify --board $BOARD resources/arduino_files/power_board/power_board.ino
- arduino --verify --board $BOARD resources/arduino_files/telemetry_board/telemetry_board.ino
- export PYTHONPATH="$PYTHONPATH:$POCS/scripts/coverage"
- export COVERAGE_PROCESS_START=.coveragerc
- coverage run $(which pytest) -v --test-databases all
- coverage combine
cache:
pip: true
directories:
- $PANDIR/astrometry/
after_success:
- bash <(curl -s https://codecov.io/bash)
- docker run -it
$ci_env
-v $TRAVIS_BUILD_DIR:/var/panoptes/POCS
gcr.io/panoptes-survey/pocs
/bin/bash -c "scripts/testing/run_tests.sh"
51 changes: 0 additions & 51 deletions Dockerfile

This file was deleted.

3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,7 @@ are some helper scripts to make this easier (from [here](https://cloud.google.co

```
gcloud components install docker-credential-gcr
docker-credential-gcr configure-docker
docker-credential-gcr gcr-login
gcloud auth configure-docker
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one thing to note here is that you can also use an IAM service account and login with docker directly if there's no other need for having gcloud installed on the devices. https://cloud.google.com/container-registry/docs/advanced-authentication basically you create a service account and grant it read only permissions to the GCR storage bucket for the project and then they can login with docker cli directly using the service account json key like this docker login -u _json_key -p "$(cat keyfile.json)" https://us.gcr.io (assuming the key is in ./keyfile.json)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @programatt, sorry for going so long. I've spent some time deep in Docker land in the last few weeks and think it will work well, thanks for all the tips.

We do use gcloud and gsutil pretty extensively and rely on a GCP network connection, so we do need them to authenticate at some point. We are using service account keys in a number of places and they work well.

I think I know have it so the images are public so anyone should be able to pull them, which is what I'm going for.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wtgee awesome! Glad to hear it seems to be going well for this project.


#### Pull POCS container
Expand Down
3 changes: 3 additions & 0 deletions bin/peas
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash -e

docker exec -it peas-shell python $POCS/scripts/peas_shell
3 changes: 3 additions & 0 deletions bin/pocs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash -e

docker exec -it peas-shell python $POCS/scripts/pocs_shell
3 changes: 1 addition & 2 deletions conf_files/peas.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ environment:
weather:
station: mongo
aag_cloud:
# serial_port: '/dev/ttyUSB1'
serial_port: '/dev/tty.USA19H2P1.1'
serial_port: '/dev/ttyUSB1'
threshold_cloudy: -25
threshold_very_cloudy: -15.
threshold_windy: 50.
Expand Down
3 changes: 3 additions & 0 deletions conf_files/pocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ messaging:
# Must match ports in peas.yaml.
cmd_port: 6500
msg_port: 6510
messaging_host: localhost
# If running in Docker uncomment the line below
# messaging_host: messaging

########################## Observations ########################################
# An observation folder contains a contiguous sequence of images of a target/field
Expand Down
59 changes: 59 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
ARG arch=amd64

FROM gcr.io/panoptes-survey/panoptes-utils:$arch AS pocs-base
MAINTAINER Developers for PANOPTES project<https://github.com/panoptes/POCS>

ARG pandir=/var/panoptes

ARG arduino_url="https://downloads.arduino.cc/arduino-cli/arduino-cli-latest-linux64.tar.bz2"

ENV PANDIR $pandir
ENV POCS ${PANDIR}/POCS

COPY . ${POCS}

RUN apt-get update \
&& apt-get install --no-install-recommends --yes \
byobu \
ffmpeg \
gcc \
pkg-config \
libncurses5-dev \
udev \
vim-nox \
# GPhoto2
&& wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/gphoto2-updater.sh \
&& chmod +x gphoto2-updater.sh \
&& /bin/bash gphoto2-updater.sh --stable \
# arduino-cli
&& wget -q $arduino_url -O arduino-cli.tar.bz2 \
&& bunzip2 arduino-cli.tar.bz2 \
&& tar xof arduino-cli.tar \
&& rm arduino-cli.tar \
# Don't know exact name of untarred file.
&& ARDUINO_FILE="$(ls arduino-cli*)" \
# Rename so we do know.
&& mv ${ARDUINO_FILE} arduino-cli \
&& chmod +x arduino-cli \
&& mv arduino-cli /usr/local/bin/ \
# Cleanup
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& rm gphoto2-updater.sh


FROM pocs-base

ARG which_pip=pip

# POCS
RUN cd ${POCS} \
&& $which_pip install --no-cache-dir --no-deps -r requirements.txt \
&& $which_pip install --no-cache-dir --no-deps -e . \
# Link conf_files to $PANDIR
&& ln -s ${POCS}/conf_files/ ${PANDIR}/

WORKDIR ${POCS}

CMD ["/bin/zsh"]

88 changes: 88 additions & 0 deletions docker/cloudbuild.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
steps:
# Set up multiarch support
- name: 'gcr.io/cloud-builders/docker'
id: 'register-qemu'
args:
- 'run'
- '--privileged'
- 'multiarch/qemu-user-static:register'
- '--reset'
waitFor: ['-']

# Build
# AMD Build
- name: 'gcr.io/cloud-builders/docker'
id: 'amd64'
args:
- 'build'
- '-f=docker/Dockerfile'
- '--build-arg=arch=amd64'
- '--tag=gcr.io/${PROJECT_ID}/pocs:amd64'
- '.'
waitFor: ['register-qemu']
# ARM Build (e.g. Raspberry Pi)
- name: 'gcr.io/cloud-builders/docker'
id: 'arm32v7'
args:
- 'build'
- '-f=docker/Dockerfile'
- '--build-arg=arch=arm32v7'
- '--build-arg=which_pip=/opt/conda/envs/panoptes-env/bin/pip'
- '--build-arg=arduino_url=https://downloads.arduino.cc/arduino-cli/arduino-cli-latest-linuxaarch64.tar.bz2'
- '--tag=gcr.io/${PROJECT_ID}/pocs:arm32v7'
- '.'
waitFor: ['register-qemu']

# Push
- name: 'gcr.io/cloud-builders/docker'
id: 'push-amd64'
args:
- 'push'
- 'gcr.io/${PROJECT_ID}/pocs:amd64'
waitFor: ['amd64']
- name: 'gcr.io/cloud-builders/docker'
id: 'push-arm'
args:
- 'push'
- 'gcr.io/${PROJECT_ID}/pocs:arm32v7'
waitFor: ['arm32v7']

# Manifest file for multiarch
- name: 'gcr.io/cloud-builders/docker'
id: 'manifest'
env:
- 'DOCKER_CLI_EXPERIMENTAL=enabled'
args:
- 'manifest'
- 'create'
- 'gcr.io/${PROJECT_ID}/pocs:latest'
- 'gcr.io/${PROJECT_ID}/pocs:arm32v7'
- 'gcr.io/${PROJECT_ID}/pocs:amd64'
waitFor: ['push-amd64', 'push-arm']

- name: 'gcr.io/cloud-builders/docker'
id: 'annotate-manifest'
env:
- 'DOCKER_CLI_EXPERIMENTAL=enabled'
args:
- 'manifest'
- 'annotate'
- 'gcr.io/${PROJECT_ID}/pocs:latest'
- 'gcr.io/${PROJECT_ID}/pocs:arm32v7'
- '--os=linux'
- '--arch=arm'
waitFor: ['manifest']

# Push manifest file
- name: 'gcr.io/cloud-builders/docker'
id: 'push-manifest'
env:
- 'DOCKER_CLI_EXPERIMENTAL=enabled'
args:
- 'manifest'
- 'push'
- 'gcr.io/${PROJECT_ID}/pocs:latest'
waitFor: ['annotate-manifest']
images:
- 'gcr.io/${PROJECT_ID}/pocs:amd64'
- 'gcr.io/${PROJECT_ID}/pocs:arm32v7'
34 changes: 34 additions & 0 deletions docker/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
version: '3.7'
services:
peas-shell:
image: gcr.io/panoptes-survey/pocs
container_name: peas-shell
privileged: true
network_mode: host
env_file: "${PANDIR:-/var/panoptes}/env_file"
depends_on:
- "messaging-hub"
volumes:
- pandir:/var/panoptes
# No-op to keep machine running, use $POCS/bin/peas to access
command: tail -f /dev/null
pocs-shell:
image: gcr.io/panoptes-survey/pocs
container_name: pocs-shell
privileged: true
network_mode: host
env_file: "${PANDIR:-/var/panoptes}/env_file"
depends_on:
- "peas-shell"
volumes:
- pandir:/var/panoptes
# No-op to keep machine running, use $POCS/bin/pocs to access
command: tail -f /dev/null
volumes:
pandir:
driver: local
driver_opts:
type: none
device: /var/panoptes
o: bind

Loading