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

Improve Dockerfiles #320

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

electrocucaracha
Copy link
Contributor

@electrocucaracha electrocucaracha commented Apr 6, 2022

The container image created from the scripts/Dockerfile results in 1.81GB size, it's not following some Docker best practices(e.g. multistage builds) and installing unnecessary packages. These changes reduce the size of the image to 1.03GB.

This new image has been validated with Hadolint tool.

Note: This PR also modifies another Dockerfiles fixing linting issues as well as creates a GitHub Workflow to validate future changes.

@uabjabborov
Copy link
Collaborator

Hi @electrocucaracha. We really appreciate your contribution. When I tried to run the following scripts

./scripts/cosmos-swagger-gen.sh base
./scripts/cosmos-swagger-gen.sh tx
./scripts/dcl-swagger-gen.sh

inside a container from updated image, I encountered the following errors:

google/protobuf/descriptor.proto: File not found.
gogoproto/gogo.proto:32:1: Import "google/protobuf/descriptor.proto" was not found or had errors.
gogoproto/gogo.proto:38:8: "google.protobuf.EnumOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.EnumOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.EnumOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.EnumOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.EnumOptions" is not defined.
gogoproto/gogo.proto:46:8: "google.protobuf.EnumValueOptions" is not defined.
gogoproto/gogo.proto:50:8: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FileOptions" is not defined.
gogoproto/gogo.proto:92:8: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.MessageOptions" is not defined.
gogoproto/gogo.proto:129:8: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
gogoproto/gogo.proto: "google.protobuf.FieldOptions" is not defined.
google/protobuf/any.proto:35:1: Import "gogoproto/gogo.proto" was not found or had errors.
google/api/annotations.proto:20:1: Import "google/protobuf/descriptor.proto" was not found or had errors.
google/api/annotations.proto:28:8: "google.protobuf.MethodOptions" is not defined.
cosmos_proto/cosmos.proto:4:1: Import "google/protobuf/descriptor.proto" was not found or had errors.
cosmos_proto/cosmos.proto:8:8: "google.protobuf.MessageOptions" is not defined.
cosmos_proto/cosmos.proto: "google.protobuf.MessageOptions" is not defined.
cosmos_proto/cosmos.proto:14:8: "google.protobuf.FieldOptions" is not defined.
cosmos/auth/v1beta1/auth.proto:4:1: Import "cosmos_proto/cosmos.proto" was not found or had errors.
cosmos/auth/v1beta1/auth.proto:5:1: Import "gogoproto/gogo.proto" was not found or had errors.
cosmos/auth/v1beta1/auth.proto:6:1: Import "google/protobuf/any.proto" was not found or had errors.
cosmos/auth/v1beta1/auth.proto:21:3: "google.protobuf.Any" is not defined.
cosmos/auth/v1beta1/query.proto:5:1: Import "gogoproto/gogo.proto" was not found or had errors.
cosmos/auth/v1beta1/query.proto:6:1: Import "google/protobuf/any.proto" was not found or had errors.
cosmos/auth/v1beta1/query.proto:7:1: Import "google/api/annotations.proto" was not found or had errors.
cosmos/auth/v1beta1/query.proto:8:1: Import "cosmos/auth/v1beta1/auth.proto" was not found or had errors.
cosmos/auth/v1beta1/query.proto:9:1: Import "cosmos_proto/cosmos.proto" was not found or had errors.
cosmos/auth/v1beta1/query.proto:46:12: "google.protobuf.Any" is not defined.
cosmos/auth/v1beta1/query.proto:64:3: "google.protobuf.Any" is not defined.
cosmos/auth/v1beta1/query.proto:73:3: "Params" is not defined.

@electrocucaracha electrocucaracha force-pushed the improve_scripts branch 2 times, most recently from 6aa7102 to 3213882 Compare April 7, 2022 18:07
@electrocucaracha electrocucaracha force-pushed the improve_scripts branch 2 times, most recently from 497d771 to 4698ec9 Compare April 28, 2022 20:43
@electrocucaracha electrocucaracha changed the title Reduce the size of Docker image located in the scripts folder Improve Dockerfiles Apr 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants