diff --git a/.dockerignore b/.dockerignore index c0bd5d3d9..e79b8f6e1 100644 --- a/.dockerignore +++ b/.dockerignore @@ -43,4 +43,5 @@ install/ superset-frontend/cypress-base/ superset-frontend/coverage/ superset/static/assets/ +superset-websocket/dist/ venv diff --git a/docker-compose.yml b/docker-compose.yml index 29d39d1e5..943005920 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,6 +61,34 @@ services: environment: CYPRESS_CONFIG: "${CYPRESS_CONFIG}" + superset-websocket: + container_name: superset_websocket + build: ./superset-websocket + image: superset-websocket + ports: + - 8080:8080 + depends_on: + - redis + # Mount everything in superset-websocket into container and + # then exclude node_modules and dist with bogus volume mount. + # This is necessary because host and container need to have + # their own, separate versions of these files. .dockerignore + # does not seem to work when starting the service through + # docker-compose. + # + # For example, node_modules may contain libs with native bindings. + # Those bindings need to be compiled for each OS and the container + # OS is not necessarily the same as host OS. + volumes: + - ./superset-websocket:/home/superset-websocket + - /home/superset-websocket/node_modules + - /home/superset-websocket/dist + environment: + - PORT=8080 + - REDIS_HOST=redis + - REDIS_PORT=6379 + - REDIS_SSL=false + superset-init: image: *superset-image container_name: superset_init diff --git a/superset-websocket/.dockerignore b/superset-websocket/.dockerignore new file mode 100644 index 000000000..c70c66711 --- /dev/null +++ b/superset-websocket/.dockerignore @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +node_modules/ +dist/ diff --git a/superset-websocket/Dockerfile b/superset-websocket/Dockerfile new file mode 100644 index 000000000..84c6d28d7 --- /dev/null +++ b/superset-websocket/Dockerfile @@ -0,0 +1,24 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +FROM node:14.16.1 + +WORKDIR /home/superset-websocket + +COPY . . + +RUN npm ci +RUN npm run build + +CMD ["npm", "start"]