Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Install NodeJS on the microsoft/dotnet:sdk docker image

Ciwan December 25, 2018

Hello

In my ASP.NET Core, I am using Gulp to convert Sass to CSS and minify files ...etc.

In the build step, I need NodeJS present so that Gulp tasks can run.

How do I install NodeJS onto the ASP.NET Core image: microsoft/dotnet:sdk

Thank you.

1 answer

1 vote
devpartisan
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
February 12, 2019

Jwan,

One way answers your question precisely, but I don't recommend it. The official dockerfile indicates the image uses Debian (I happen to know the code word "stretch" means Debian). That means we can install Node using the Debian package manager:

curl -sL https://deb.nodesource.com/setup_11.x | bash -
apt-get install -y nodejs

What I would recommend instead is using 2 different images. Do the Gulp tasks in 1 Pipeline step using a Node image, pass the resulting files as "artifacts", and then perform the .NET work. That might look something like this (don't read too much into the directory structures, change to fit your case):

pipelines:
  default:
    - step:
        name: Gulp the JavaScript
        image: node:11.9.0
        caches:
          - node
        script:
          - npm install
          - gulp
        artifacts: # defining the artifacts to be passed to each future step.
          - dist/**
          - reports/*.txt
    - step:
        name: Dotnet the Csharp
        image: microsoft/dotnet:2.2-sdk
        script:
          # using one of the artifacts from the previous step
          - cat reports/tests.txt
          - dotnet build someproject.sln

Note both images are pinned to a version. Major version numbers are breaking changes, so don't undermine the reliability of your build by pointing to "latest". I find minor and bugfix numbers also useful to pin because they can cause more subtle build problems. When you want to bump the version, put it on a branch, make the change, then merge only when you know it works.

Hope that helps.

ili July 14, 2020

Is this answer still valid?  I have a configured a similar pipeline but the artifacts from the first node step are not available in the second step which uses dotnet image.  Do the images between the steps have to be the same for this to work?

I have also tried the $BITBUCKET_PIPE_STORAGE_DIR and $BITBUCKET_PIPE_SHARED_STORAGE_DIR but those don't seem to work either.  They both point to /root when I cd to their locations.

Thanks.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events