Урок 1.00:03:44
Why Use Docker?
Урок 2.00:02:54
What is Docker?
Урок 3.00:01:58
Docker for Mac/Windows
Урок 4.00:04:46
Installing Docker on MacOS
Урок 5.00:02:04
Installing Docker for Windows Professional with HyperV
Урок 6.00:00:41
More Windows Professional Setup with HyperV
Урок 7.00:01:10
One Last Piece of Windows Professional Setup with HyperV
Урок 8.00:05:04
Using the Docker Client
Урок 9.00:08:31
But Really...What's a Container?
Урок 10.00:02:45
How's Docker Running on Your Computer?
Урок 11.00:01:55
Docker Run in Detail
Урок 12.00:05:13
Overriding Default Commands
Урок 13.00:04:10
Listing Running Containers
Урок 14.00:05:17
Container Lifecycle
Урок 15.00:03:44
Restarting Stopped Containers
Урок 16.00:01:40
Removing Stopped Containers
Урок 17.00:02:34
Retrieving Log Outputs
Урок 18.00:05:22
Stopping Containers
Урок 19.00:04:17
Multi-Command Containers
Урок 20.00:02:54
Executing Commands in Running Containers
Урок 21.00:04:36
The Purpose of the IT Flag
Урок 22.00:04:07
Getting a Command Prompt in a Container
Урок 23.00:02:14
Starting with a Shell
Урок 24.00:03:10
Container Isolation
Урок 25.00:02:37
Creating Docker Images
Урок 26.00:04:52
Building a Dockerfile
Урок 27.00:02:42
Dockerfile Teardown
Урок 28.00:05:41
What's a Base Image?
Урок 29.00:11:10
The Build Process in Detail
Урок 30.00:03:25
A Brief Recap
Урок 31.00:07:03
Rebuilds with Cache
Урок 32.00:04:27
Tagging an Image
Урок 33.00:05:01
Manual Image Generation with Docker Commit
Урок 34.00:02:36
Project Outline
Урок 35.00:05:04
Node Server Setup
Урок 36.00:05:13
A Few Planned Errors
Урок 37.00:07:51
Base Image Issues
Урок 38.00:03:19
A Few Missing Files
Урок 39.00:04:51
Copying Build Files
Урок 40.00:07:27
Container Port Mapping
Урок 41.00:07:53
Specifying a Working Directory
Урок 42.00:04:17
Unnecessary Rebuilds
Урок 43.00:04:59
Minimizing Cache Busting and Rebuilds
Урок 44.00:03:58
App Overview
Урок 45.00:06:44
App Server Starter Code
Урок 46.00:03:13
Assembling a Dockerfile
Урок 47.00:05:33
Introducing Docker Compose
Урок 48.00:06:03
Docker Compose Files
Урок 49.00:05:01
Networking with Docker Compose
Урок 50.00:04:39
Docker Compose Commands
Урок 51.00:02:35
Stopping Docker Compose Containers
Урок 52.00:02:54
Container Maintenance with Compose
Урок 53.00:09:22
Automatic Container Restarts
Урок 54.00:02:22
Container Status with Docker Compose
Урок 55.00:01:29
Development Workflow
Урок 56.00:06:33
Flow Specifics
Урок 57.00:01:51
Docker's Purpose
Урок 58.00:03:26
Project Generation
Урок 59.00:01:45
More on Project Generation
Урок 60.00:05:10
Necessary Commands
Урок 61.00:03:43
Creating the Dev Dockerfile
Урок 62.00:01:30
Duplicating Dependencies
Урок 63.00:02:51
Starting the Container
Урок 64.00:06:54
Docker Volumes
Урок 65.00:04:51
Bookmarking Volumes
Урок 66.00:04:23
Shorthand with Docker Compose
Урок 67.00:02:03
Overriding Dockerfile Selection
Урок 68.00:02:52
Do We Need Copy?
Урок 69.00:03:39
Executing Tests
Урок 70.00:04:55
Live Updating Tests
Урок 71.00:05:46
Docker Compose for Running Tests
Урок 72.00:08:31
Shortcomings on Testing
Урок 73.00:03:08
Need for Nginx
Урок 74.00:06:55
Multi-Step Docker Builds
Урок 75.00:07:06
Implementing Multi-Step Builds
Урок 76.00:02:28
Running Nginx
Урок 77.00:03:05
Services Overview
Урок 78.00:03:58
Github Setup
Урок 79.00:04:18
Travis CI Setup
Урок 80.00:07:40
Travis YML File Configuration
Урок 81.00:04:15
A Touch More Travis Setup
Урок 82.00:03:31
Automatic Build Creation
Урок 83.00:04:11
AWS Elastic Beanstalk
Урок 84.00:02:26
More on Elastic Beanstalk
Урок 85.00:08:47
Travis Config for Deployment
Урок 86.00:07:18
Automated Deployments
Урок 87.00:03:57
Exposing Ports Through the Dockerfile
Урок 88.00:04:00
Workflow With Github
Урок 89.00:02:02
Redeploy on Pull Request Merge
Урок 90.00:02:04
Deployment Wrapup
Урок 91.00:03:03
Single Container Deployment Issues
Урок 92.00:04:31
Application Overview
Урок 93.00:05:12
Application Architecture
Урок 94.00:11:42
Worker Process Setup
Урок 95.00:05:20
Express API Setup
Урок 96.00:07:37
Connecting to Postgres
Урок 97.00:12:21
More Express API Setup
Урок 98.00:01:52
Generating the React App
Урок 99.00:06:32
Fetching Data in the React App
Урок 100.00:08:30
Rendering Logic in the App
Урок 101.00:00:27
Exporting the Fib Class
Урок 102.00:04:37
Routing in the React App
Урок 103.00:02:40
Checkpoint Catchup
Урок 104.00:06:42
Dockerizing a React App - Again!
Урок 105.00:03:48
Dockerizing Generic Node Apps
Урок 106.00:07:06
Adding Postgres as a Service
Урок 107.00:06:18
Docker-compose Config
Урок 108.00:10:21
Environment Variables with Docker Compose
Урок 109.00:03:43
The Worker and Client Services
Урок 110.00:09:42
Nginx Path Routing
Урок 111.00:11:13
Routing with Nginx
Урок 112.00:05:39
Building a Custom Nginx Image
Урок 113.00:01:51
Starting Up Docker Compose
Урок 114.00:03:23
Troubleshooting Startup Bugs
Урок 115.00:03:52
Opening Websocket Connections
Урок 116.00:05:40
Production Multi-Container Deployments
Урок 117.00:06:06
Production Dockerfiles
Урок 118.00:05:24
Multiple Nginx Instances
Урок 119.00:04:54
Altering Nginx's Listen Port
Урок 120.00:01:12
Cleaning Up Tests
Урок 121.00:04:09
Github and Travis CI Setup
Урок 122.00:08:46
Travis Configuration Setup
Урок 123.00:07:35
Pushing Images to Docker Hub
Урок 124.00:01:50
Successful Image Building
Урок 125.00:04:31
Multi-Container Definition Files
Урок 126.00:03:10
Finding Docs on Container Definitions
Урок 127.00:05:46
Adding Container Definitions to DockerRun
Урок 128.00:05:19
More Container Definitions
Урок 129.00:07:48
Forming Container Links
Урок 130.00:03:31
Creating the EB Environment
Урок 131.00:10:45
Managed Data Service Providers
Урок 132.00:09:22
Overview of AWS VPC's and Security Groups
Урок 133.00:06:32
RDS Database Creation
Урок 134.00:04:12
ElastiCache Redis Creation
Урок 135.00:04:19
Creating a Custom Security Group
Урок 136.00:05:00
Applying Security Groups to Resources
Урок 137.00:07:56
Setting Environment Variables
Урок 138.00:05:13
IAM Keys for Deployment
Урок 139.00:03:21
Travis Deploy Script
Урок 140.00:04:11
Container Memory Allocations
Урок 141.00:02:57
Verifying Deployment
Урок 142.00:01:30
A Quick App Change
Урок 143.00:00:58
Making Changes
Урок 144.00:05:06
Cleaning Up AWS Resources
Урок 145.00:08:07
The Why's and What's of Kubernetes
Урок 146.00:05:48
Kubernetes in Development and Production
Урок 147.00:05:37
Minikube Setup on MacOS
Урок 148.00:07:38
Mapping Existing Knowledge
Урок 149.00:06:53
Adding Configuration Files
Урок 150.00:06:56
Object Types and API Versions
Урок 151.00:09:20
Running Containers in Pods
Урок 152.00:13:38
Service Config Files in Depth
Урок 153.00:10:25
Connecting to Running Containers
Урок 154.00:13:03
The Entire Deployment Flow
Урок 155.00:13:37
Imperative vs Declarative Deployments
Урок 156.00:06:11
Updating Existing Objects
Урок 157.00:07:05
Declarative Updates in Action
Урок 158.00:02:56
Limitations in Config Updates
Урок 159.00:06:04
Running Containers with Deployments
Урок 160.00:03:19
Deployment Configuration Files
Урок 161.00:04:24
Walking Through the Deployment Config
Урок 162.00:06:23
Applying a Deployment
Урок 163.00:05:20
Why Use Services?
Урок 164.00:06:32
Scaling and Changing Deployments
Урок 165.00:03:58
Updating Deployment Images
Урок 166.00:03:00
Rebuilding the Client Image
Урок 167.00:12:25
Triggering Deployment Updates
Урок 168.00:07:25
Imperatively Updating a Deployment's Image
Урок 169.00:05:38
Multiple Docker Installations
Урок 170.00:05:58
Reconfiguring Docker CLI
Урок 171.00:05:06
Why Mess with Docker in the Node?
Урок 172.00:05:14
The Path to Production
Урок 173.00:04:37
A Quick Checkpoint
Урок 174.00:05:31
Recreating the Deployment
Урок 175.00:03:42
NodePort vs ClusterIP Services
Урок 176.00:03:53
The ClusterIP Config
Урок 177.00:04:19
Applying Multiple Files with Kubectl
Урок 178.00:06:03
Express API Deployment Config
Урок 179.00:03:09
Cluster IP for the Express API
Урок 180.00:06:00
Combining Config Into Single Files
Урок 181.00:04:37
The Worker Deployment
Урок 182.00:04:52
Reapplying a Batch of Config Files
Урок 183.00:07:27
Creating and Applying Redis Config
Урок 184.00:06:15
Last Set of Boring Config!
Урок 185.00:07:19
The Need for Volumes with Databases
Урок 186.00:05:18
Kubernetes Volumes
Урок 187.00:03:00
Volumes vs Persistent Volumes
Урок 188.00:09:23
Persistent Volumes vs Persistent Volume Claims
Урок 189.00:02:58
Claim Config Files
Урок 190.00:03:32
Persistent Volume Access Modes
Урок 191.00:07:43
Where Does Kubernetes Allocate Persistent Volumes?
Урок 192.00:06:10
Designating a PVC in a Pod Template
Урок 193.00:02:23
Applying a PVC
Урок 194.00:04:10
Defining Environment Variables
Урок 195.00:05:45
Adding Environment Variables to Config
Урок 196.00:09:26
Creating an Encoded Secret
Урок 197.00:05:54
Passing Secrets as Environment Variables
Урок 198.00:02:18
Environment Variables as Strings
Урок 199.00:04:15
Load Balancer Services
Урок 200.00:03:33
A Quick Note on Ingresses
Урок 201.00:01:38
One Other Quick Note!
Урок 202.00:05:18
Behind the Scenes of Ingress
Урок 203.00:06:39
More Behind the Scenes of Ingress
Урок 204.00:06:22
Setting up Ingress Locally with Minikube
Урок 205.00:07:01
Creating the Ingress Configuration
Урок 206.00:02:51
Testing Ingress Locally
Урок 207.00:03:29
The Minikube Dashboard
Урок 208.00:05:50
The Deployment Process
Урок 209.00:04:54
Google Cloud vs AWS for Kubernetes
Урок 210.00:04:00
Creating a Git Repo
Урок 211.00:01:36
Linking the Github Repo to Travis
Урок 212.00:02:00
Creating a Google Cloud Project
Урок 213.00:02:12
Linking a Billing Account
Урок 214.00:01:48
Kubernetes Engine Init
Урок 215.00:04:48
Creating a Cluster with Google Cloud
Урок 216.00:04:35
Kubernetes Dashboard on Google Cloud
Урок 217.00:05:05
Travis Deployment Overview
Урок 218.00:05:45
Installing the Google Cloud SDK
Урок 219.00:05:30
Generating a Service Account
Урок 220.00:09:18
Running Travis CLI in a Container
Урок 221.00:07:55
Encrypting a Service Account File
Урок 222.00:04:41
More Google Cloud CLI Config
Урок 223.00:06:19
Running Tests with Travis
Урок 224.00:03:50
Custom Deployment Providers
Урок 225.00:08:34
Unique Deployment Images
Урок 226.00:07:48
Unique Tags for Built Images
Урок 227.00:07:52
Updating the Deployment Script
Урок 228.00:05:35
Configuring the GCloud CLI on Cloud Console
Урок 229.00:02:25
Creating a Secret on Google Cloud
Урок 230.00:08:16
Helm Setup
Урок 231.00:08:22
Kubernetes Security with RBAC
Урок 232.00:05:09
Assigning Tiller a Service Account
Урок 233.00:01:57
Ingress-Nginx with Helm
Урок 234.00:03:49
The Result of Ingress-Nginx
Урок 235.00:03:31
Finally - Deployment!
Урок 236.00:00:46
Did I Really Type That?
Урок 237.00:05:21
Verifying Deployment
Урок 238.00:04:30
A Workflow for Changing in Prod
Урок 239.00:01:02
Merging a PR for Deployment
Урок 240.00:01:38
That's It! What's Next?
Урок 241.00:05:36
HTTPS Setup Overview
Урок 242.00:02:18
Domain Purchase
Урок 243.00:03:31
Domain Name Setup
Урок 244.00:01:58
Cert Manager Install
Урок 245.00:05:59
How to Wire Up Cert Manager
Урок 246.00:05:08
Issuer Config File
Урок 247.00:05:19
Certificate Config File
Урок 248.00:03:16
Deploying Changes
Урок 249.00:03:55
Verifying the Certificate
Урок 250.00:06:50
Ingress Config for HTTPS
Урок 251.00:02:53
It Worked!
Урок 252.00:03:55
Awkward Local Development
Урок 253.00:02:00
Installing Skaffold
Урок 254.00:06:44
The Skaffold Config File
Урок 255.00:05:03
Live Sync Changes
Урок 256.00:05:08
Automatic Shutdown
Урок 257.00:05:30
Testing Live Sync with the API Server
It's already 22h 9m video on udemy :)
And now even after adding COPY ./ ./ command I cant create image for node app
I have such error:
> [3/3] RUN npm install:
#7 0.785 npm ERR! Tracker "idealTree" already exists
#7 0.787
#7 0.788 npm ERR! A complete log of this run can be found in:
#7 0.788 npm ERR! /root/.npm/_logs/2022-05-17T16_11_44_574Z-debug-0.log
Travis CI is a pain in the arse! But the more important I've got a relatively up to day course which in fact hasn't been updated.
There is no AWSElasticBeanstalkFullAccess any longer. Use AdministratorAccess-AWSElasticBeanstalk
If you're experiencing the following error
The request signature we calculated does not match the signature you provided. Check your key and signing method. (Aws::S3::Errors::SignatureDoesNotMatch)
You mustn't use secure: key. Write it as follows in the .travis.yml file:
access_key_id: $AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_KEY
MIND When you add your environment variables to Travis CI, there is an annotation you may overlook:
If your secret variable has special characters like &, escape them by adding \ in front of each special character. For example, ma&w!doc would be entered as ma&w!doc.
For example:
Secret access key: aaAXtldqugatcfiVMsSNq/jmmdZebbEy74tz4mAp
In my key is used a forward slash - I needed to escape it with a backslash:
AWS_SECRET_KEY aaAXtldqugatcfiVMsSNq\/jmmdZebbEy74tz4mAp
Stephen might think users will deal with the issues on their own - Yes, we do! However I spent an hour on those errors digging the Internet. Please, save our time Stephen!
I've forgotten to mention that Travis CI now is free to a certain extent. You're given 10000 points regardless of deployment failure or success you'll be charged for each try. Hopefully you won't spend your points on debugging.
https://github.com/StephenGrider/DockerCasts/issues/17
Well, I wonder why Stephen doesn't update changes in his courses.
It must be said Travis requires your banking card credentials.
Travis gives you 10000 points. Running one job costs you around 54 points or 80 points if it counts only those jobs which are passed. I don't know.
Travis assumes all your projects are relevant for an inspection. There is no need to add a project. The difference is if you created a Travis account, it imported all your GitHub's repos and then you create a new one. I had to wait for five minutes to get an update on Travis which is quite long. It will however react on those repos including .travis.yml file.
The main point of my message is you won't get exit code (0) in Travis. It's no longer relevant. Your tests will hang for 10 minutes than Travis will interrupt the process throwing an error.
If you want to get a proper behaviour, try this one
docker run -e CI=true npm run test -- --coverage
you pass an environment variable to the container so that npm knows you want to exit once it's done.
https://github.com/StephenGrider/DockerCasts/issues/16