From a3f0d75558457996c7a769debcebe5737b5683f5 Mon Sep 17 00:00:00 2001 From: Son D Nguyen Date: Tue, 20 Jul 2021 16:24:51 -0500 Subject: [PATCH 01/11] Combine steps to reduce --- Dockerfile | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index bb796d0..ff886d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,21 +13,19 @@ RUN apt-get update && apt-get install -y \ bzip2 \ tar \ amqp-tools \ - openssh-client - -RUN apt-get install -y \ + openssh-client \ gfortran \ - --no-install-recommends && rm -r /var/lib/apt/lists/* -RUN wget ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz -O /tmp/wgrib2.tgz -RUN mkdir -p /usr/local/grib2/ -RUN tar -xf /tmp/wgrib2.tgz -C /tmp/ -RUN rm -r /tmp/wgrib2.tgz -RUN mv /tmp/grib2/ /usr/local/grib2/ -RUN cd /usr/local/grib2/grib2 && make -RUN ln -s /usr/local/grib2/grib2/wgrib2/wgrib2 /usr/local/bin/wgrib2 -RUN apt-get -y autoremove build-essential + --no-install-recommends && rm -r /var/lib/apt/lists/* \ + && wget ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz -O /tmp/wgrib2.tgz \ + && mkdir -p /usr/local/grib2/ \ + && tar -xf /tmp/wgrib2.tgz -C /tmp/ \ + && rm -r /tmp/wgrib2.tgz \ + && mv /tmp/grib2/ /usr/local/grib2/ \ + && cd /usr/local/grib2/grib2 && make \ + && ln -s /usr/local/grib2/grib2/wgrib2/wgrib2 /usr/local/bin/wgrib2 \ + && apt-get -y autoremove build-essential VOLUME /srv/ VOLUME /opt/ WORKDIR /opt/ -CMD ["/bin/bash", "entrypoint.sh"] \ No newline at end of file +CMD ["/bin/bash", "entrypoint.sh"] From 66966b03d7d3a878fce598645e64684484f71008 Mon Sep 17 00:00:00 2001 From: Nguyen Date: Wed, 21 Jul 2021 22:27:16 -0500 Subject: [PATCH 02/11] add .env.dist and docker-compose --- .env.dist | 2 ++ .gitignore | 5 +++-- Dockerfile | 3 ++- README.md | 53 +++++++++++++++++++++++++++------------------- docker-compose.yml | 21 ++++++++++++++++++ 5 files changed, 59 insertions(+), 25 deletions(-) create mode 100644 .env.dist create mode 100644 docker-compose.yml diff --git a/.env.dist b/.env.dist new file mode 100644 index 0000000..2a7e107 --- /dev/null +++ b/.env.dist @@ -0,0 +1,2 @@ +HOST_DATA_ABS_DIR="/abs/path/to/data/dir" +HOST_SCRIPT_ABS_DIR="/abs/path/to/script/dir" \ No newline at end of file diff --git a/.gitignore b/.gitignore index cc25533..7942131 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -.env -data/* \ No newline at end of file +.env +data +script \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index ff886d9..357a76f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,4 +28,5 @@ RUN apt-get update && apt-get install -y \ VOLUME /srv/ VOLUME /opt/ WORKDIR /opt/ -CMD ["/bin/bash", "entrypoint.sh"] +ENTRYPOINT [ "/bin/bash" ] +CMD ["/opt/entrypoint.sh"] diff --git a/README.md b/README.md index 63bf8da..58fa369 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,31 @@ -WGRIB2 on Container (Debian Bulleyes) -### Note: I update the container based on: https://hub.docker.com/r/bearstudio/wgrib/ -## USAGE - -### Build: -`docker build -t sondngyn/wgrib2 .` -### On Linux: -`docker run -v /path/to/data:/srv/ -v /path/to/script:/opt/ sondngyn/wgrib2 /opt/script_file_name.sh` -### On Windows: -*Note: -Remember to put `#!bin/bash` in the beginning of your script file -Make sure your script file uses LF (Linux line break types) instead of CRLF (Windows). You can easily change it on VS Code -`docker run -v C:\absolute\path\to\data\dir\:/srv/ -v C:\absolute\path\to\script\dir\:/opt/ sondngyn/wgrib2 /opt/script_file_name.sh` -(watch out for back-slashes and forward-slashes) -### Example on Windows (powershell): -`docker run -v C:\Users\myuser\mydata\:/srv/ -v C:\Users\myuser\myscript\:/opt/ sondngyn/wgrib2 /opt/myscript.sh` - -## DEV: -0. Clean up: `docker container rm wgrib2 -f` -1. Build image: `docker build -t wgrib2 .` -2. Spin up container: `docker run --rm --name wgrib2 -d -it wgrib2` -3. Exec: `docker exec -it wgrib2 bash` +WGRIB2 on Container (Debian Bulleyes) +### Note: I update the container based on: https://hub.docker.com/r/bearstudio/wgrib/ +## USAGE + +### Build: +`docker build -t sondngyn/wgrib2 .` + +### Usage: + +#### Docker-Compose CLI +Create `.env` file from `.env.dist` and change the env values to the dirs location on your computer (for windows, use `/c/abs/path/`) +`docker-compose build wgrib2` +`docker-compose up wgrib2` (change `command` in docker-compose file to your script filename before running `up`) + +#### Docker CLI +##### On Linux: +`docker run -v /path/to/data:/srv/ -v /path/to/script:/opt/ sondngyn/wgrib2 /opt/script_file_name.sh` +##### On Windows: +*Note: +Remember to put `#!bin/bash` in the beginning of your script file +Make sure your script file uses LF (Linux line break types) instead of CRLF (Windows) +`docker run -v /c/absolute/path:/srv/ -v /c/absolute/path/:/opt/ sondngyn/wgrib2 /opt/script_file_name.sh` +(watch out for back-slashes and forward-slashes) +### Example on Windows (powershell): +`docker run -v C:\Users\myuser\mydata\:/srv/ -v C:\Users\myuser\myscript\:/opt/ sondngyn/wgrib2 /opt/myscript.sh` + +## DEV: +0. Clean up: `docker container rm wgrib2 -f` +1. Build image: `docker build -t wgrib2 .` +2. Spin up container: `docker run --rm --name wgrib2 -d -it wgrib2` +3. Exec: `docker exec -it wgrib2 bash` diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..453eec3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.8" + +services: + wgrib2: + image: wgrib2 + container_name: wgrib2 + restart: unless-stopped + env_file: ./.env + entrypoint: /bin/bash + # Change this command to your bash script filename + command: "/srv/script.sh" + build: + context: ./ + volumes: + - type: bind + source: ${HOST_DATA_ABS_DIR} + target: /opt/ + - type: bind + source: ${HOST_SCRIPT_ABS_DIR} + target: /srv/ + From cfe8c7e6f3e903b0b5730a9b728fa27614c1d578 Mon Sep 17 00:00:00 2001 From: Son D Nguyen Date: Wed, 21 Jul 2021 22:41:37 -0500 Subject: [PATCH 03/11] Create main.yml --- .github/workflows/main.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..43d7cbb --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,29 @@ +name: Docker Hub Push +on: + push: +# Publish semver tags as releases. + tags: [ 'v*.*.*' ] + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + push: true + tags: user/app:latest From b7ff4ee2ff642bb293756ed536cff5807ba43697 Mon Sep 17 00:00:00 2001 From: Nguyen Date: Wed, 21 Jul 2021 22:49:06 -0500 Subject: [PATCH 04/11] update README --- README.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 58fa369..b677480 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,6 @@ WGRIB2 on Container (Debian Bulleyes) ### Note: I update the container based on: https://hub.docker.com/r/bearstudio/wgrib/ ## USAGE -### Build: -`docker build -t sondngyn/wgrib2 .` - ### Usage: #### Docker-Compose CLI @@ -13,19 +10,14 @@ Create `.env` file from `.env.dist` and change the env values to the dirs locati `docker-compose up wgrib2` (change `command` in docker-compose file to your script filename before running `up`) #### Docker CLI +`docker build -t wgrib2 .` ##### On Linux: `docker run -v /path/to/data:/srv/ -v /path/to/script:/opt/ sondngyn/wgrib2 /opt/script_file_name.sh` ##### On Windows: *Note: Remember to put `#!bin/bash` in the beginning of your script file Make sure your script file uses LF (Linux line break types) instead of CRLF (Windows) -`docker run -v /c/absolute/path:/srv/ -v /c/absolute/path/:/opt/ sondngyn/wgrib2 /opt/script_file_name.sh` +`docker run -v C:\\absolute\\path\\:/srv/ -v C:\\absolute\\path\\:/opt/ wgrib2 script_file_name.sh` (watch out for back-slashes and forward-slashes) ### Example on Windows (powershell): -`docker run -v C:\Users\myuser\mydata\:/srv/ -v C:\Users\myuser\myscript\:/opt/ sondngyn/wgrib2 /opt/myscript.sh` - -## DEV: -0. Clean up: `docker container rm wgrib2 -f` -1. Build image: `docker build -t wgrib2 .` -2. Spin up container: `docker run --rm --name wgrib2 -d -it wgrib2` -3. Exec: `docker exec -it wgrib2 bash` +`docker run -v C:\\Users\\myuser\\mydata\\:/srv/ -v C:\\Users\\myuser\\myscript\\:/opt/ wgrib2 myscript.sh` From 2af53357a4f452084778f160574167d43bcc967b Mon Sep 17 00:00:00 2001 From: Nguyen Date: Wed, 21 Jul 2021 22:50:59 -0500 Subject: [PATCH 05/11] update yml pipeline --- .github/workflows/{main.yml => push.yml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{main.yml => push.yml} (96%) diff --git a/.github/workflows/main.yml b/.github/workflows/push.yml similarity index 96% rename from .github/workflows/main.yml rename to .github/workflows/push.yml index 43d7cbb..a425fe9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/push.yml @@ -2,7 +2,7 @@ name: Docker Hub Push on: push: # Publish semver tags as releases. - tags: [ 'v*.*.*' ] + tags: [ '*' ] jobs: docker: From e6396337644d3aa8065b191e70814404e9dc42a9 Mon Sep 17 00:00:00 2001 From: Son D Nguyen Date: Wed, 21 Jul 2021 22:56:23 -0500 Subject: [PATCH 06/11] Update push.yml --- .github/workflows/push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index a425fe9..26354cd 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -18,8 +18,8 @@ jobs: name: Login to DockerHub uses: docker/login-action@v1 with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 From 03f1044eba72c1027b8e66afe1b595bac3028fa3 Mon Sep 17 00:00:00 2001 From: Son D Nguyen Date: Wed, 21 Jul 2021 23:05:16 -0500 Subject: [PATCH 07/11] Update push.yml --- .github/workflows/push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 26354cd..646d708 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -26,4 +26,4 @@ jobs: with: context: . push: true - tags: user/app:latest + tags: sondngyn/wgrib2:test From 03fa1ee7cb8c368aa4fbf0c1f356bc9594bea707 Mon Sep 17 00:00:00 2001 From: Son D Nguyen Date: Wed, 21 Jul 2021 23:14:15 -0500 Subject: [PATCH 08/11] Update push.yml --- .github/workflows/push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 646d708..da6eb99 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -26,4 +26,4 @@ jobs: with: context: . push: true - tags: sondngyn/wgrib2:test +# tags: sondngyn/wgrib2:latest From 647f0d2e28fa8c6188448141fe06a797d3cc7c27 Mon Sep 17 00:00:00 2001 From: Son D Nguyen Date: Wed, 21 Jul 2021 23:19:22 -0500 Subject: [PATCH 09/11] Update push.yml --- .github/workflows/push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index da6eb99..53f5955 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -26,4 +26,4 @@ jobs: with: context: . push: true -# tags: sondngyn/wgrib2:latest + tags: sondngyn/wgrib2:${{ steps.meta.outputs.tags }} From d45db9798064e72bf33830d48020259325650228 Mon Sep 17 00:00:00 2001 From: Son D Nguyen Date: Wed, 21 Jul 2021 23:24:18 -0500 Subject: [PATCH 10/11] Update push.yml --- .github/workflows/push.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 53f5955..90c1187 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -11,6 +11,23 @@ jobs: - name: Checkout uses: actions/checkout@v2 + - + name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + # list of Docker images to use as base name for tags + images: | + sondngyn/wgrib2 + # generate Docker tags based on the following events/attributes + tags: | + type=schedule + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 From bd656328e1c29f6166561c18bb70914485927e70 Mon Sep 17 00:00:00 2001 From: Son D Nguyen Date: Wed, 21 Jul 2021 23:28:47 -0500 Subject: [PATCH 11/11] Update push.yml --- .github/workflows/push.yml | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 90c1187..3c67aff 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -11,23 +11,6 @@ jobs: - name: Checkout uses: actions/checkout@v2 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v3 - with: - # list of Docker images to use as base name for tags - images: | - sondngyn/wgrib2 - # generate Docker tags based on the following events/attributes - tags: | - type=schedule - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 @@ -43,4 +26,7 @@ jobs: with: context: . push: true - tags: sondngyn/wgrib2:${{ steps.meta.outputs.tags }} + pull: true + cache-from: type=registry,ref=sondngyn/wgrib2:latest + cache-to: type=inline + tags: sondngyn/wgrib2:latest