Our great sponsors
-
action-tmate
Debug your GitHub Actions via SSH by using tmate to get access to the runner system itself.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Solution: Tip o' the hat to Daniela Baron here, there's a real life saver of tool call tmate.
version: "3.7" services: postgres: image: "postgres:14-alpine" environment: POSTGRES_USER: "example" POSTGRES_PASSWORD: "example" ports: - "5432:5432" volumes: - "postgres:/var/lib/postgresql/data" redis: image: "redis:5-alpine" command: ["redis-server", "--requirepass", "yourpassword", "--appendonly", "yes"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 ports: - "6379:6379" volumes: - redis:/data sysctls: # https://github.com/docker-library/redis/issues/35 net.core.somaxconn: "511" sidekiq: depends_on: - "postgres" - "redis" - "elasticsearch" build: context: . args: environment: development image: you/yourapp command: bundle exec sidekiq -C config/sidekiq.yml.erb volumes: - ".:/app" # don"t mount tmp directory - /app/tmp env_file: - ".env" web: build: context: . args: environment: development image: you/yourapp command: bundle exec rspec depends_on: elasticsearch: condition: service_healthy postgres: condition: service_started redis: condition: service_healthy tty: true stdin_open: true ports: - "3000:3000" env_file: - ".env" elasticsearch: container_name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2 environment: - discovery.type=single-node - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" - "logger.org.elasticsearch=error" healthcheck: test: curl --fail elasticsearch:9200/_cat/health >/dev/null || exit 1 interval: 30s timeout: 10s retries: 5 ulimits: memlock: soft: -1 hard: -1 volumes: - esdata:/usr/share/elasticsearch/data ports: - 9200:9200 volumes: redis: postgres: esdata:
[Manual] If all 10 workers reported tests passing (eye twitch), then I would trigger a deploy locally by running git push hostname:master where hostname is the git remote of my production server where Dokku is configured. This would build the image from scratch again, then deploy that image.